2017-01-11 16 views
2

Only show one row(last data)複数のテーブル行を追加するにはどうすればよいですか?

私は複数の行を取得しませんでした.1行しか表示されません。この問題を解決する方法。

//活動

public class TableViewActivity extends AppCompatActivity { 

    TableLayout tableLayout; 
    TableRow tableRow; 
    TextView textView1, textView2; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_table_view); 
     tableLayout = (TableLayout) findViewById(R.id.tableLayout); 
     tableRow = (TableRow) findViewById(R.id.tableRow2); 
     textView1 = (TextView) findViewById(R.id.TextViewRowTwo1); 
     textView2 = (TextView) findViewById(R.id.TextViewRowTwo2); 

     List<Student> students = new ArrayList<>(); 
     students.add(new Student(1, "Mahmud")); 
     students.add(new Student(2, "Saiful")); 
     students.add(new Student(3, "Monir")); 
     students.add(new Student(4, "Milton")); 


     for (int j = 0; j< students.size(); j++) { 

      textView1.setText(students.get(j).getId()+""); 
      textView2.setText(students.get(j).getName()); 

      // TEXTVIEW 
      if(textView1.getParent()!=null) 
       ((ViewGroup)textView1.getParent()).removeView(textView1); // <- fix 
      tableRow.addView(textView1); 

      if(textView2.getParent()!=null) 
       ((ViewGroup)textView2.getParent()).removeView(textView2); // <- fix 
      tableRow.addView(textView2); 

      if(tableRow.getParent()!=null) 
       ((ViewGroup)tableRow.getParent()).removeView(tableRow); // <- fix 
      tableLayout.addView(tableRow); 

     } 

     setContentView(tableLayout); 

    } 

} 

答えて

1

あなたがのTableRowを動的に作成する必要があり、あなたがtablelayutすることのTableRowを追加する必要があるのTableRowに値を入れたときに。

for (int j = 0; j< students.size(); j++) { 
    TableRow tableRow = new TableRow(this); 
    textView1.setText(students.get(j).getId()+""); 
    textView2.setText(students.get(j).getName()); 

    // TEXTVIEW 
    if(textView1.getParent()!=null) 
     ((ViewGroup)textView1.getParent()).removeView(textView1); // <- fix 
     tableRow.addView(textView1); 
     tableLayout.addView(tableRow); 


    if(textView2.getParent()!=null) 
     ((ViewGroup)textView2.getParent()).removeView(textView2); // <- fix 
     tableRow.addView(textView2); 
     tableLayout.addView(tableRow); 

    if(tableRow.getParent()!=null) 
     ((ViewGroup)tableRow.getParent()).removeView(tableRow); // <- fix 
     tableLayout.addView(tableRow); 

    } 

これはうまくいきます。

+0

ありがとうございますが、それは私にはうまくいかない。私のアプリは、これらのコードを実行した後にクラッシュしました。 –

+0

ログを貼り付けてください。 –

+0

java.lang.IllegalStateException:指定された子にはすでに親があります。子の親で最初にremoveView()を呼び出す必要があります。ありがとう –

関連する問題