Как снять отметку с пункта setItemChecked ()? - PullRequest
2 голосов
/ 30 ноября 2011

Я использую ListView с MULTIPLE_CHOICE и для возврата выбранных элементов я использую метод setItemChecked().

Он отлично работает, так как я могу видеть ранее проверенные элементы.Проблема заключается в том, что если я сниму отметку один из ранее проверенных элементов, а затем получу список проверенных элементов по custList.getCheckItemIds(), то в массиве все еще будет элемент, который я не отмечал.

Может кто-нибудь сказать мне, если это должно произойти, или я что-то упустил?

Ответы [ 3 ]

1 голос
/ 30 ноября 2011

Здесь вы должны вызвать setOnCheckedChangeListener и управлять кодом внутри этого блока слушателя.

checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
              // Write and manage your code here.
        }
});
0 голосов
/ 23 января 2013

это:

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
}

не работает.

follow Список выбора нескольких контактов [getCheckedItemPositions ()]

должно быть в порядке.

SparseBooleanArray selectedPositions = listView.getCheckedItemPositions();

for (int i=0; i<selectedPositions.size(); i++) {
    if (selectedPositions.get(selectedPositions.keyAt(i)) == true) {
        //do stuff
    }
}
0 голосов
/ 06 июня 2012

Если вы просто пытаетесь выяснить, какие элементы проверяются в любой момент времени, вы можете получить массив 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...