Мой сценарий:
-Им пользуюсь списком в режиме множественного выбора, чтобы пользователь мог удалить несколько предметов, которые он проверил сразу.
-Когда пользователь нажимает кнопку удаления, я делаю следующее:
-get позиции отмеченных предметов с использованием: myList.getCheckedItemPositions();
-Получите предметы в этом положении и поместите их в список - toDeleteList.
- (ВОПРОС НА ОСНОВАНИИ ЭТОГО ЭТАПА) используйте myList.setItemChecked (позиция, false), чтобы снять отметку с элемента списка.
-Remove элементов в «toDeleteList»просмотр списка профайлов в Android-блоге
Теперь, я был «вынужден» вручную снимите элемент списка, так как результат myList.getCheckedItemPositions() не изменяется после удаления из MyList .. т.е.
-if, например, я удаляю 1-й пункт (a) из списка [a, b, c, d], b будет отображаться после удаления, т. Е. в списке списка [b, c, d] - после удаления a.
Вопрос: почему? Поскольку SparseBooleanArray возвращен myList.getCheckedItemPositions(); то же самое и до после удаление из списка - с помощью адаптера.
Я думал (я могу ошибаться), что после удаления элемента из списка через адаптер, массив CheckedItemPositions также должен измениться на отразить новое состояние списка
например. - MyList = [а, б, в, г]
- тогда я проверить элементы в позиции 0 и 3 (проверен на & г)
- проверенные вакансии пункта (mylist.getCheckedItemPositions()) массив Теперь имеет значение true для позиций 0 и 3
- Если я удалю & d из списка, поэтому mylist = [b, c], mylist.getCheckedItemPositions() все тот же, что и выше, т.е. позиции 0 и 3 по-прежнему проверяются после удаления элементов из списка (я думаю, что это не нормально - но опять-таки я ошибаюсь)
- Я ожидал, что он не будет проверяться на позиции 0 & 3, потому что элементов, которые были ранее на этих позициях больше нет в списке.
Я получаю здесь что-то не так (или имею неправильные ожидания :))? кто-то просьба уточнить это ..
Спасибо заранее,
Спасибо .. я понимаю, что вы имеете в виду, но я подумал, что если я использую mylist.getCheckedItemPositions() в новом списке, т.е. с ранее отмеченными элементами больше не в списке (после использования adapter.remove() ..) - результат должен быть пустым/нулевым, потому что мой список больше не содержит отмеченных элементов .. - опять же, возможно, вы правы, спасибо – cire
все, что вам нужно вызвать метод listView.getCheckItemIds(), который вернет идентификаторы элементов checkeds, и он работает для меня, не отменяя ничего из этого;). метод getcheckedItemPositions() не работает :) – Houcine