我正在使用listview和ArrayAdapter,并有以下代码:
final SparseBooleanArray checked = listViewFilters.getCheckedItemPositions();
if (checked.size() == listViewFilters.getAdapter().getCount()) {
//all is selected
} else {
//collect each value
}
一切正常,直到我需要从头开始选择所有项目。所以我添加了这段代码来选择所有项目:
for (int i = 0; i < listViewFilters.getAdapter().getCount(); i++) {
listViewFilters.setItemChecked(i, true);
}
添加上面的代码后,如果我检查了一些项目,check.size()=仍然计算所有项目的数量。预期结果是 - checked.size()&lt;计数。
感谢。
答案 0 :(得分:0)
好。 listView.getCheckedItemCount()
工作正常。
很遗憾listView.getCheckedItemCount()
仅在listView.getCheckedItemPositions().size()
setItemChecked(i, true)
的{{1}}
答案 1 :(得分:0)
getCheckedItemPositions
可能会有点棘手。正如您所注意到的,基于与ListView
的交互,它可能会返回不同的结果。
简短版本:一旦您选择并取消选择了某个项目,该项目仍由getCheckedItemPositions
返回,其值为false。因此,您需要实际读取键中的值,而不是依赖于大小。