我有一個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()將不起作用,因爲標題也會被刪除(並且它喜歡撕開視圖層次結構,這也不是我想要的)。
我只是沒有看到它是什麼我做錯了。我希望第二眼(或第二百眼)的眼睛可能會在我的思維中看到缺陷。