Я хочу знать, возможно ли использовать файл макета xml для динамического определения содержимого представления из кода. Когда мы запускаем действие, мы передаем его макету xml для использования с вызовом метода setContentView(R.layout.main);
, но возможно ли использовать файл макета xml для определения динамически создаваемой ViewGroup, такой как LinearLayout?
У меня есть макет XML, который показывает таблицу результатов игры. Каждый счет, который отображается на этом экране, должен динамически добавляться с помощью кода. Я знаю, что в коде можно создать ViewGroup для этой оценки и заполнить ее всеми вещами, необходимыми для создания единой оценки, а затем делать это каждый раз для каждой оценки, а затем добавлять их все в существующий интерфейс пользователя. структура, уже определенная в макете xml. Я хотел бы знать, можно ли использовать для этого другой XML-файл?
Например, XML-файл макета:
<LinearLayout android:id="@+id/top">
<LinearLayout android:id="@+id/column_heading"/>
</LinearLayout>
В другом XML-файле макета есть что-то вроде:
<LinearLayout android:id="@+id/row">
<TextView/>
<TextView/>
<TextView/>
<TextView/>
</LinearLayout>
В коде я хотел бы сделать что-то вроде следующего:
LinearLayout top = (LinearLayout)findViewById(R.id.top);
for (int i = 0; i < num_of_rows; i++) {
LinearLayout row = new LinearLayout(this);
row.setContentView(R.layout.row); //where R.layout.row is the second layout above
// ... dynamically change values as needed
top.addView(row);
}
Однако .setContentView(...)
не является допустимым методом LinearLayout. Есть ли другой способ сделать это? Я знаю, что могу сделать все это с помощью кода, но это довольно грязно, и этот способ может показаться очень аккуратным и рациональным.