TableRowsの数が不明なTableLayoutを含むXMLレイアウトがあります...行の数は実行時に確立されますが、2つの列が必要であることがわかっています...これ :
- -TableLayout全体を2列に設定する方法はありますか?
-(実行時に)作成されたTableRowsにIDをプログラムで付与する方法はありますか?これはTableLayout内に配置されるため、後でソフトウェアの他の部分から参照できますか?
TableRowsの数が不明なTableLayoutを含むXMLレイアウトがあります...行の数は実行時に確立されますが、2つの列が必要であることがわかっています...これ :
-(実行時に)作成されたTableRowsにIDをプログラムで付与する方法はありますか?これはTableLayout内に配置されるため、後でソフトウェアの他の部分から参照できますか?
XMLパーツとLayoutInflaterを介してテーブル行を作成できます。あなたがあなたのtable_cell.xmlとしてこれを持っていたとしましょう:
<TextView android:id="@+id/text"
android:text="woot" />
そしてこれをtable_row.xmlとして(TableRowで何か凝ったことをしているのでない限り、それを独自のXMLファイルに入れる必要はなく、代わりにプログラムで作成するだけです。結果は同じになります):
<TableRow />
TableLayout参照が「テーブル」と呼ばれていると仮定すると、次のようなことができます。
TableLayout table = (TableLayout)findViewById(R.id.table);
LayoutInflater inflater = getLayoutInflater();
for(int i = 0; i < 5; i++) {
TableRow row = (TableRow)inflater.inflate(R.layout.table_row, table, false);
View v = (View)inflater.inflate(R.layout.table_cell, row, false);
row.addView(v);
v = (View)inflater.inflate(R.layout.table_cell, row, false);
row.addView(v);
// you can store your reference to `row` here for later use
table.addView(row);
}
この手法を使用すると、XMLでレイアウトを設定できるため、読み取り/整理/編集が容易になり、テーブル内の列と行の数をプログラムで制御できます。後で使用するために、各テーブル行への参照を保存することもできます。