2012-02-20 30 views
0

テーブルレイアウトに複数の行を追加する必要があります。それぞれの行に2つの画像ボタンを追加する必要があります。アクティビティを開始するたびに行数が異なる可能性があります.SQLiteデータベースを調べて、データベースの各行についてImage Buttonを追加する必要があります。テーブルレイアウトの各行には2つのイメージボタンがあります。ANdroid:動的に画像レイアウトをテーブルレイアウトの行に追加する

db.open(); 
    int count = db.getCount(); 
    boolean newRow = true; 
    for (int i = 0; i < count; i++) { 
     if (newRow == true) { 
      newRow = false; 
      row = new TableRow(this); 
      row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,  LayoutParams.WRAP_CONTENT)); 
     } 
     ImageButton button = new ImageButton(this); 
     row.addView(button); 
     tableLayout.addView(row); 
    } 
    db.close(); 

のTableRow行が単にこのアクティビティの変数としてコードブロック上に定義されます。これまでのところ、私はこのコードを持っています。私のテーブルレイアウト(コードでtableLayout)が活動レイアウトのXMLコードで定義されている:

<TableLayout 
    android:id="@+id/tableLayoutContacts" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 


</TableLayout> 

コードは、私はこの問題を解決することができる波平

tableLayout.addView(row);

ラインにクラッシュ。何か案は?ありがとう!!

+0

を試してみてください? –

+0

tableLayout =(TableLayout)findViewById(R.id.tableLayoutContacts); –

+0

クラッシュログを提供します。 –

答えて

0

私はこの問題は、あなたのコードは1行だけになりますと、下記のようにあなたがtableLayoutに何度も何度もその行を追加しているようだ

異なっていると思います。

tableLayout.addView(row); 

これはのViewGroup

のaddViewInner機能ではIllegalStateExceptionにつながるどのようにJavaコードであなたのTableLayoutを割り当てます。この

db.open(); 
    int count = db.getCount(); 
    boolean newRow = false; 
    for (int i = 0; i < count; i++) { 
     if (i % 2 == 0) 
      newRow = true; 
     if (newRow == true) { 
      newRow = false; 
      row = new TableRow(this); 
      row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,  LayoutParams.WRAP_CONTENT)); 
      tableLayout.addView(row); 
     } 
     ImageButton button = new ImageButton(this); 
     row.addView(button); 

    } 
    db.close(); 
+0

うわー、私はそれを見ていませんでした...それは今、大変感謝します! :)しかし、もう少し小さな問題があるようです...私は新しい行を追加すると、前の行の下にそれを追加すると仮定しました。しかし、私は今、すべてのボタンを一列に(少なくとも光学的に)持っています...どのようなヒント?ありがとう! :) –

+0

行の2つのボタンの編集された回答を試す –

関連する問題