动态添加和删除表行 - Android

时间:2009-09-10 19:02:23

标签: android

我正在尝试动态添加和删除TableLayout中的行。

布局在xml文件中定义。

我能够成功删除一行,但是当我调用相应的addView命令时没有任何反应。

table = (TableLayout)findViewById(R.id.table);
row = (TableRow)findViewById(R.id.row);

table.removeView(row);

table.addView(row);

这会导致一行被删除,但不会再被添加。

编辑:事实证明,它毕竟是添加,只是在屏幕底部,而不是在与删除相同的位置。

我可以通过指定索引将其添加到正确的位置:

table.addView(row,4); // 4 happens to the the row

但是我无法弄清楚如何确定行的索引,似乎没有一种方法可以实现这一点。有谁知道怎么做? (即如果我不知道指数是4,我怎么能算出来的呢)

编辑:包含XML。这只是有问题的行,它上面和下面还有其他行

<TableRow android:id="@+id/row">

        <TextView android:id="@+id/field1"
            android:text="testing"
        android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="3dip"
            android:textStyle="bold"
            android:textSize="18dip"
        />


        <TextView android:id="@+id/field2"
            android:padding="3dip"
            android:text="test"
            android:textSize="18dip"
            android:gravity="right"
        />



    </TableRow>

2 个答案:

答案 0 :(得分:1)

使用hierarchyviewer(在您的SDK tools/目录中)确定该行是否真的没有添加,或者是否正在添加,但是某些布局参数混乱,因此它没有出现在 - 屏幕。

答案 1 :(得分:1)

public int indexOfChild (View child) 

public View getChildAt (int index) 

TableLayout提供的两种方法。 ; - )