2012-02-20 5 views
0

Мне нужно добавить несколько строк в мой макет таблицы, и для каждой строки мне нужно добавить два кнопки изображения. Количество строк может быть различным при каждом запуске Activity - я просматриваю базу данных SQLite, и для каждой строки в базе данных мне нужно добавить кнопку изображения. И будет две кнопки изображения в каждой строке таблицы. До сих пор у меня есть этот код:ANdroid: динамически добавлять кнопки изображения в строки в таблице Layout

db.open(); 
    int count = db.getCount(); 
    boolean newRow = true; 
    for (int i = 0; i < count; i++) { 
     if (newRow == true) { 
      newRow = false; 
      row = new TableRow(this); 
      row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,  LayoutParams.WRAP_CONTENT)); 
     } 
     ImageButton button = new ImageButton(this); 
     row.addView(button); 
     tableLayout.addView(row); 
    } 
    db.close(); 

Строка TableRow определена выше этого блока кода просто как переменная для этой операции. Моя Сервировка стола (TableLayout в коде) определяется в XML-коде макета активности:

<TableLayout 
    android:id="@+id/tableLayoutContacts" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 


</TableLayout> 

кода аварии на линии

tableLayout.addView(row);

Я не был в состоянии решить эту проблему. Есть идеи? Благодаря!!

+0

Как вы назначаете TableLayout в Java-код? –

+0

tableLayout = (TableLayout) findViewById (R.id.tableLayoutContacts); –

+0

Предоставьте свой журнал аварий. –

ответ

0

Я думаю, что проблема отличается

кажется, что Ваш код будет иметь только один ряд, и вы добавляете эту строку снова и снова TableLayout, как показано ниже.

tableLayout.addView(row); 

Это приведет к IllegalStateException в addViewInner Функция ViewGroup

попробовать это

db.open(); 
    int count = db.getCount(); 
    boolean newRow = false; 
    for (int i = 0; i < count; i++) { 
     if (i % 2 == 0) 
      newRow = true; 
     if (newRow == true) { 
      newRow = false; 
      row = new TableRow(this); 
      row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,  LayoutParams.WRAP_CONTENT)); 
      tableLayout.addView(row); 
     } 
     ImageButton button = new ImageButton(this); 
     row.addView(button); 

    } 
    db.close(); 
+0

Wow, я, в общем, не видел, что ... но он работает сейчас, спасибо очень! :) Но, похоже, есть еще одна небольшая проблема ... Я предположил, что добавление новой строки добавит ее ниже предыдущей. Но теперь у меня есть все мои кнопки в одной строке (по крайней мере, оптически) ... любой намек? Благодаря! :) –

+0

Попробуйте отредактированный ответ для двух кнопок подряд –

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