2010-07-27 2 views
5

Я динамически строю TableLayout. И мне нужно, чтобы TableRow имел пробел в определенной позиции столбца.Android TableRow - Как добавить динамический просмотр в определенное положение?

Например, мне нужна строка с ImageView на 3 и 5 позиции, следующая строка имеет ImageView на 1, 2, 4 позиции. Я пытаюсь использовать:

TableRow row1 = new TableRow(this); 
    row1.addView(new ImageView(this), 2); 
    row1.addView(new ImageView(this), 4); 
    mTable.addView(row1); 
    TableRow row2 = new TableRow(this); 
    row2.addView(new ImageView(this), 0); 
    row2.addView(new ImageView(this), 1); 
    row2.addView(new ImageView(this), 3); 
    mTable.addView(row2); 

но я получил IndexOfBoundException во время выполнения.
ОШИБКА/AndroidRuntime (771): Вызванная: java.lang.IndexOutOfBoundsException: индекс = 2 Количество = 0

Любые предложения будут оценены.
Спасибо.

ответ

4

На самом деле, ошибка кажется вполне логичной с первого взгляда на ваш код. Если таблица не создана из xml и как необходимое количество строк, при добавлении представления в индекс 2 этот индекс не существует. Попробуйте заменить это 2 на 0, вы увидите, что он работает. Поэтому вам просто нужно добавить пустой ImageView другие индексы, если вы хотите придерживаться своего.

+0

Serhy, спасибо за ответ. Но, может быть, вы знаете, как мне указать количество столбцов в строке? Или количество строк и столбцов в таблице? Я просто хотел использовать addView (просмотр, индекс) без такой ошибки ... – levkatata

+0

Если я правильно вас понимаю, вы хотите иметь изображения в ячейке, а затем не в следующем, потом одно изображение, затем нет, ... и то в следующей строке, наоборот, начиная с пустой ячейки? – Sephy

+0

Да, Серхи, ты прав. Но есть разные такие макеты, которые мне нужно создать, как ромб, как крест, как тик и так далее. Я пробовал ваше решение, оно отлично работает! Но я заметил, что время создания такого макета увеличивается, зависит от количества просмотров, которые я создаю. Мне нужно создать много пустых представлений ... – levkatata

Смежные вопросы