1

我有一个带有复选框(多个)的列表视图。我已经用一个简单的方法实现了列表视图中元素的删除:

              adapter.remove(adapter.getItem(item));
              adapter.notifyDataSetChanged();

它可以工作,除了复选框状态被搞砸的事实:列表视图会按应有的方式填充已删除的人,但复选框保持在相同的状态。换句话说,如果列表是:

a   on
b   off
c   on
d   off
e   on

然后你删除第二个,你得到:

a   on
c   off
d   on
e   off

就像我删除了文本视图,但没有删除我的列表视图的复选框......你以前见过这种情况吗?知道如何解决吗?

谢谢!

4

1 回答 1

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();
于 2014-02-06T11:33:21.707 回答