我有一个XML布局,其中包含一个TableLayout,其TableRows数量未知...... 行数将在运行时建立,但我知道的是我想要两列...... 所以我对此有几个问题:
- 有没有一种方法可以为(在运行时)创建的TableRows提供一个id,它将放在TableLayout中,所以我可以稍后从软件的其他部分引用它们?
答案 0 :(得分:5)
您可以通过XML部件和LayoutInflater构建表行。假设您将此作为table_cell.xml:
<TextView android:id="@+id/text"
android:text="woot" />
这就是你的table_row.xml(除非你对你的TableRow做了一些奇特的事情,你可能不需要把它放在它自己的XML文件中,而只是以编程方式创建它。结果将是相同的):
<TableRow />
假设您的TableLayout引用被称为“table”,您可以执行以下操作:
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设置布局,使其更易于阅读/组织/编辑,并且您仍然可以通过编程控制表中的列数和行数。您还可以存储对每个表行的引用以供以后使用。