У меня есть расположение XML, которое содержит TableLayout с неизвестным числом TableRows... Количество строк будет установлено durin время выполнения, что я действительно знаю, хотя то, что я хочу два столбца... Таким образом, у меня есть несколько вопросов относительно этого:
- существует ли путь программно для предоставления идентификатора (во время времени выполнения), создал TableRows, который будет размещен в TableLayout, таким образом, я смогу сослаться на них позже от других частей программного обеспечения?
Вы можете создать свой строки таблицы через части 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, что упростит чтение / организацию / редактирование и у вас по-прежнему есть программный контроль над количеством столбцов и строк в таблице. Вы также можете сохранить ссылки на каждую строку таблицы для дальнейшего использования.