为什么删除项目列表视图不会删除其复选框?

时间:2013-06-16 05:40:23

标签: android listview adapter

我有一个带复选框的列表视图(多个)。我已经在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的复选框.... 你以前见过这种情况吗?知道怎么解决吗?

谢谢!

1 个答案:

答案 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();