Я обычно добавляю динамические представления, как это, используя привязку данных:
@BindingAdapter({"addDynamicView", "position"})
public static void addDynamicView(TableLayout layout, TicketItem item, int position) {
// LayoutInflater inflater = LayoutInflater.from(layout.getContext()); // if you need layout inflater
for (int i = 0; i <= position; i++) { // loop to whatever condition you have
TextView lbl = new TextView(layout.getContext());
lbl.setText("Desc1");
layout.addView(lbl);
}
}
Изменить TableLayout в xml,
<TableLayout
android:id="@+id/tblTicketItemDetails"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tableRow6"
app:addDynamicView = "@{ticket_item}"
app:position = "@{position}">
Объявить новую переменную в xml,
<variable
name="position"
type="int" />
Отправить позицию из Java в xml
holder.binding.setVariable(BR.position, position);
или
holder.binding.setPosition(position);