ANdroid:动态地将图像按钮添加到表格布局中的行

时间:2012-02-20 07:53:47

标签: android row tablelayout

我需要在Table布局中添加一些行,并且每行需要添加两个Image Buttons。每次启动Activity时行数都可以不同 - 我查看SQLite数据库,对于数据库中的每一行,我需要添加一个Image Button。 Table布局的每一行都有两个图像按钮。到目前为止,我有这段代码:

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行在此代码块上方定义为此Activity的变量。我的表格布局(代码中的tableLayout)在Activity布局的XML代码中定义:

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


</TableLayout> 

代码在

行崩溃

tableLayout.addView(row);

我无法解决这个问题。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我认为问题不同

似乎您的代码只有一行,并且您将该行一次又一次地添加到tableLayout,如下所示。

tableLayout.addView(row);

这将导致ViewGroup的addViewInner函数出现IllegalStateException

试试这个

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();