我有一个TableView中,我programmaticly行添加到使用一个简单的循环,如以下删除选定的孩子从父母的TableView
LayoutInflater inflater = LayoutInflater.from(getActivity());
for (int i = 0; i < dataList.size(); ++i)
{
DataEntry dataEntry = dataList.valueAt(i);
// Add the row
TableRow row = (TableRow)inflater.inflate(R.layout.data_row, _table, false);
_table.addView(row);
row.setTag("dataRow");
// Code that looks up the 'column' views and sets their value to the dataEntry
}
这是伟大的工作,并填充列表就好了。但是当我更改数据集时,我想清除所有添加的行,除了头(第一个)行,然后添加一组新行(即运行上面的代码)。所以我有这么一点代码:
final int childCount = _table.getChildCount();
for (int i = 1; i < childCount; ++i)
{
View view = _table.getChildAt(i);
_table.removeView(view);
}
这是我可以做的这个循环的最简单的版本。我最初是在检查空视图,因为它们在恢复任务时出现。然后我会检查视图的标记是否为“dataRow”,并且只删除数据行。但是,这一切都给了我同样的结果。它会跳过标题(我从1开始而不是0开始),然后从下往下移除下一行,然后移除其他行。如果我运行这个循环足够多的时间,它会清除列表,但添加一段时间(_table.getChildCount()> 1)就好像我显然只是做错了。 _table.removeAllChildren()将不起作用,因为标题也会被删除(并且它喜欢撕开视图层次结构,这也不是我想要的)。
我只是没有看到它是什么我做错了。我希望第二眼(或第二百眼)的眼睛可能会在我的思维中看到缺陷。