我使用的ListView与ArrayAdapter和具有下面的代码:的Android的ListView getCheckedPosition返回错误SparseBooleanArray
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);
}
加入上面的代码后,如果我检查了一些项目,checked.size()=所有项目的计数反正。预期的结果是 - checked.size()< count。
谢谢。
我认为你必须发布你的整个适配器代码。没有人确定你在代码中做了什么错误......可能是一些小错误.... – sushildlh
当你检查一些项目后,你是否更新你的SparseBooleanArray? – Chol
不,'checked.size()'不会改变:只有里面的内容改变 – pskink