我有一个带复选框的列表视图(多个)。我已经在listview中删除了一个简单的元素:
adapter.remove(adapter.getItem(item));
adapter.notifyDataSetChanged();
它有效,除了复选框状态搞砸的事实:listview上升填充被删除的人,但ckeckboxes保持相同的状态。换句话说,如果列表是:
a on
b off
c on
d off
e on
你删除了第二个,你得到:
a on
c off
d on
e off
就像我删除了textview而不是我的listview的复选框.... 你以前见过这种情况吗?知道怎么解决吗?
谢谢!
答案 0 :(得分:0)
有同样的问题。 Android有时会变得不合逻辑,至少对普通人类开发人员的期望是不合时宜的。
这样做。神奇的是在checkedItemPositions.Clear()中。这本来是C#MonoDroid代码,我希望我把它正确地翻译回Java。
// Delete the checked items
SparseBooleanArray checkedItemPositions = list.getCheckedItemPositions();
int itemCount = list.getCount();
for (int i = itemCount - 1; i >= 0; i--) {
if (checkedItemPositions.get(i)) {
listAdapter.remove(data[i]);
data.removeAt(i);
}
}
checkedItemPositions.clear();
listAdapter.notifyDataSetChanged();