2010-11-25 4 views
0

Я пытаюсь добавить строки таблицы динамически ...... Ниже мой Java-код:Динамически добавить строки в TableLayout

TableLayout tl = (TableLayout) findViewById(R.id.tablerow); 
     /* Create a new row to be added. */ 
     TableRow tr = new TableRow(this); 
     tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
     /* Create a Button to be the row-content. */ 
     Button b = new Button(this); 
     b.setText("Dynamic Button"); 
     b.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
     /* Add Button to row. */ 
     tr.addView(b); 
     /* Add row to TableLayout. */ 
     tl.addView(tr, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 

Мой код XML является

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tablerow" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TableRow> 
     <TextView 
      android:id="@+id/content" 
      android:singleLine="false" /> 
    </TableRow> 

</TableLayout> 

Но я получаю ошибку на этой линии:

final TableLayout tl = (TableLayout)findViewById(R.id.tablerow); 

Ошибка я получаю не может бросить из поля зрения в TableLayout

Любая помощь будет оценена

+0

Почему вы используете динамическое раздувание? setContentView() уже должен был сделать все необходимое раздувание. – 2010-11-25 11:05:57

ответ

1

Вы должны иметь android:layout_height и android:layout_width в ваших <TableRow> и <TextView> полей.

Эти два объекта не требуются.

0

При создании экземпляра для TableLayout проверить его следует android.widget управления ..

, что это проблема

TableLayout (android.widget), не наш пакет

0

, как вы можете бросить TableRow to tableLayout здесь (TableLayout) findViewById (R.id.tablerow)? Разве это не так?

0

Существует два разных типа LayoutParams, TableRow.LayoutParams и TableLayout.LayoutParams.

Eclipse IDE не будет выдавать ошибку, если вы используете неправильный адрес не в том месте, но это приведет к тому, что пользовательский интерфейс не будет работать. Когда вы устанавливаете LayoutParams для TableRow и для представлений внутри TableRow, убедитесь, что вы устанавливаете их явно вправо, используя квалифицированное имя.

Пример:

TableLayout tblServices = (TableLayout) findViewById(R.id.tblServices); 
TableRow row = new TableRow(this); 
row.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
TextView tvName = new TextView(this); 
tvName.setLayoutParams(new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
tblServices.addView(row, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 

Кроме того, вам не нужно устанавливать LayoutParams для кнопки, так что удаление этой линии должно помочь.

0

Слишком поздно ответить, но если кто-то ищет это. У меня была такая же проблема и исправлено это, позвонив setContent(), прежде чем пытаться найти представление.