Как снять отметку с пункта setItemChecked ()?
Я использую ListView с MULTIPLE_CHOICE
и чтобы вернуть выбранные предметы я использую setItemChecked()
метод.
Он отлично работает, так как я могу видеть ранее проверенные элементы. Проблема в том, что если я снимаю галочку с одного из ранее проверенных пунктов, а затем получаю список проверенных пунктов по custList.getCheckItemIds()
В массиве все еще есть пункт, который я не проверял.
Может кто-нибудь сказать мне, если это должно произойти, или я что-то упустил?
3 ответа
Здесь вы должны вызвать 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
}
}
Если вы просто пытаетесь выяснить, какие элементы проверяются в любой момент времени, вы можете получить SparseBooleanArray из ListView и перебрать его с помощью цикла 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
}