如何清除TableLayout中的所有行?

23

我知道这个问题之前已经被提出过,但其他回答都没有帮助到我,所以我自己问一下...

我试图从一个 TableLayout 中删除所有现有的行,因为我想让用户能够动态更新该表。其他建议推荐使用 removeAllViews(),即可删除所有子视图,但是这会从同一个 LinearLayout 中的其他表中删除行(我有一个包含多个表的线性布局)。

你有什么建议吗?

4个回答

58

看起来您可能正在对整个LinearLayout调用removeAllViews(),而不是要清除的特定TableLayout。请仔细检查您是否有如下代码:

myLinearLayout.someTableView.removeAllViews()


不,我肯定要调用我的TableLayout...tl =(TableLayout)dialog.findViewById(R.id.afi_waist_table); tl.removeAllViews(); - Fran Fitzpatrick
稍微调整了一下我的代码,终于成功让removeAllViews()起作用了。 - Fran Fitzpatrick
调用 removeAllViews() 实际上很好用。我以为它会删除我的其他表格内容,因为我在表头中使用了 TableRow,这是我没有意识到的。 - Fran Fitzpatrick

14

你需要在每个TableRow上调用removeAllViews():

int count = table.getChildCount();
for (int i = 0; i < count; i++) {
    View child = table.getChildAt(i);
    if (child instanceof TableRow) ((ViewGroup) child).removeAllViews();
}

您的建议将删除行的所有子视图,但不会删除行本身。表格布局将保留空行。 - Ken
我知道,那就是我认为原帖作者想要的。 - Romain Guy
太好了!这对我来说没问题 :D - gumuruh

4

如果您想删除除第一行(通常用作标题)以外的所有行,可以使用以下代码:

tableLayout.removeViews(1, Math.max(0, tableLayout.getChildCount() - 1));

2
你可以简单地使用 yourTableView.removeViews(startIndex, count) 来移除行。 startIndex 是你想要开始删除的整数值。如果你有一个表头并且不想要删除它,请从位置1开始,否则从0开始。 count 是要删除的行数。最初的回答。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接