Динамически загружать настроенные ячейки таблицы в таблицу

#android #tablerow

#Android #tablerow

Вопрос:

Я хочу создать, скажем, 5 различных типов ячеек в таблице вместе с идентификаторами и загрузить их соответствующим образом в соответствии с заданными данными в зависимости от типа? Создание TableRow внутри TableLayout, по-видимому, является одним из вариантов, но как динамически создавать TableRows в зависимости от типа?

Заранее благодарю.

Ответ №1:

Можете ли вы определить тип во время выполнения? Если да, это должно быть просто с использованием switch или структуры if else.

Чтобы увеличить XML-ресурс во время выполнения в зависимости от типа строки, используйте:

 ((LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE))
.inflate(layoutId, yourTableLayout, true);
  

Установите соответствующий layoutId перед расширением ресурса, а затем продолжайте. Параметры yourTableLayout и true — это всего лишь мое предположение, ознакомьтесь с документацией по адресу LayoutInflater и выберите метод inflate, который соответствует вашим потребностям.

Для динамического создания TableRows может помочь это руководство: Создание строк TableRow внутри TableLayout программно

В основном:

1- Извлеките TableLayout и создайте TableRow

 // Get the TableLayout
TableLayout tl = (TableLayout) findViewById(R.id.maintable);

TableRow tr = new TableRow(this);
tr.setId(100 current);
tr.setLayoutParams(new LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));   
  

2- Создайте элементы для добавления

 TextView labelTV = new TextView(this);
labelTV.setId(200 current);
labelTV.setText(provinces[current]);
labelTV.setTextColor(Color.BLACK);
labelTV.setLayoutParams(new LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
tr.addView(labelTV);
  

3- Добавьте TableRow в TableLayout

 // Add the TableRow to the TableLayout
tl.addView(tr, new TableLayout.LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
  

Кажется, это просто и быстро, я еще не тестировал это.

Комментарии:

1. Поскольку TableRows имеют разный тип [5 разных типов], добавляемые элементы отличаются. Я хочу сохранить ее в xml с некоторым идентификатором и загрузить соответствующий во время выполнения. Возможно ли это?

2. Я обновил ответ, надеюсь, это прояснит ваш вопрос.