从父TableView中删除选定的子项

时间:2014-05-13 00:19:31

标签: android

我有一个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)并删除下一行,然后从那里删除每一行。如果我运行这个循环足够多次它将清除列表但添加一个while(_table.getChildCount()&gt; 1)似乎我显然只是做错了。 _table.removeAllChildren()将无法工作,因为标题随后被删除(它喜欢撕开视图层次结构,这也不是我想要的)。

我只是没有看到我做错了什么。我希望第二个(或第二百个)眼睛可以看到我思考的缺陷。

1 个答案:

答案 0 :(得分:0)

在我问这个问题后4分钟左右,我想出来了。

我正在循环孩子并将其移除。然后父母将所有条目向下滑动。将for循环更改为以下作品(并且具有讽刺意味的是将此循环转换为一段时间(> 1)我认为这似乎是一个坏主意。

for (int i = 1; i < childCount; ++i)
    _table.removeView(_table.getChildAt(1));

现在我看看它是有道理的..我应该从底部删除一些更干净的代码,并且应该记住这是从链表中删除项目的正确方法,这很可能是什么儿童名单是。