Вы можете построить строки таблицы с помощью частей 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, упрощая чтение, организацию и редактирование, и у вас все еще есть программный контроль над количеством столбцов и строк в таблице. Вы также можете хранить ссылки на каждую строку таблицы для дальнейшего использования.