我正在使用 ListViewMULTIPLE_CHOICE并获取所选项目,我正在使用setItemChecked()方法。
它工作正常,因为我能够看到以前检查过的项目。问题是,如果我取消选中以前选中的项目之一,然后通过custList.getCheckItemIds()
数组获取选中项目的列表,仍然有我未选中的项目。
谁能告诉我这是否应该发生或者我错过了什么?
我正在使用 ListViewMULTIPLE_CHOICE并获取所选项目,我正在使用setItemChecked()方法。
它工作正常,因为我能够看到以前检查过的项目。问题是,如果我取消选中以前选中的项目之一,然后通过custList.getCheckItemIds()
数组获取选中项目的列表,仍然有我未选中的项目。
谁能告诉我这是否应该发生或者我错过了什么?
在这里,您必须调用 setOnCheckedChangeListener 并且您必须管理此侦听器块内的代码。
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// Write and manage your code here.
}
});
这个:
SparseBooleanArray checked = list.getCheckedItemPositions();
for (int i = 0; i < checked.size(); i++){
if (checked.get(i))
//the item at index i is checked, do something
else
//the item is not checked, do something else
}
不起作用。
关注多个联系人选取器列表 [getCheckedItemPositions()]
应该可以。
SparseBooleanArray selectedPositions = listView.getCheckedItemPositions();
for (int i=0; i<selectedPositions.size(); i++) {
if (selectedPositions.get(selectedPositions.keyAt(i)) == true) {
//do stuff
}
}
如果您只是想找出在任何给定时间检查了哪些项目,您可以从 ListView 中获取一个 SparseBooleanArray,并使用 for 循环对其进行迭代。例如:
SparseBooleanArray checked = list.getCheckedItemPositions();
for (int i = 0; i < checked.size(); i++){
if (checked.get(i))
//the item at index i is checked, do something
else
//the item is not checked, do something else
}