Создание макета в Java, так как необходимое количество TableLayouts не известно как время разработки.
Я получаю IllegalStateException
, говорящий мне удалить View
(из его текущего родителя) перед назначением егодругой родитель, когда я вызываю createPlayerTables()
Исключение выдается на первой строке в этом цикле, когда я пытаюсь добавить ImageView из списка ImageViews в первый TableRow:
for (int i = 0; i < 3; i++) {
tableRowsLst.get(0).addView((ImageView) imageViewsLst.get(i));
tableRowsLst.get(1).addView((ImageView) imageViewsLst.get(i+3));
}
Ошибка предполагает, что ImageView уже был добавлен в ViewGroup , но, увидев приведенный ниже код, я создаю новые ImageViews и добавляю их в ViewGroup только в той строке, в которой он ошибается,так что я не уверен, почему это терпит неудачу.
// List<ImageView> imageViewsLst = new ...
// List<TableRow> tableRowsLst = new ...
/**
* Initialises the TableLayouts, one per player
*/
private TableLayout createPlayerTables(int playerNum) {
...
for (int i = 0; i < 6; i++) {
imageViewsLst.add(new ImageView(this));
...
}
for (int i = 0; i < 3; i++) {
tableRowsLst.add(new TableRow(this));
...
}
for (int i = 0; i < 3; i++) {
tableRowsLst.get(0).addView((ImageView) imageViewsLst.get(i));
tableRowsLst.get(1).addView((ImageView) imageViewsLst.get(i+3));
}
...
}