Я создаю AlertDialog с ListView, а у адаптера есть элементы CheckAll/UncheckAll программно. Это работает. Но когда я проверяю элемент, касаясь экрана, затем нажимаю «Проверить все», а затем «Отменить все», отмеченный элемент остается отмеченным.
DialogInterface.OnMultiChoiceClickListener coloursDialogListener = new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
ListView list = ((AlertDialog) dialog).getListView();
long[] a = list.getCheckItemIds();
if (which == 0) {
if (isChecked) {
for (int i = 0; i < list.getCount(); ++i)
list.setItemChecked(i, true);
} else {
for(int i=0;i<list.getCount();++i)
list.setItemChecked(i, false);
}
a = list.getCheckItemIds();//fucntion return empty array
//but on screen checked element is Check.
return;
}
}
};
Обновление: я нахожу, когда возникает ошибка. если в функции
setMultiChoiceItems (элементы CharSequence [], логическое значение [] checkedItems, прослушиватель DialogInterface.OnMultiChoiceClickListener)
Я устанавливаю параметр checkedItems, возникает ошибка. И если я устанавливаю параметр checkedItems null, ошибка не возникает. Есть идеи?
ОБНОВЛЕНИЕ: я открываю проблему в системе отслеживания ошибок Google, дополнительные данные смотрите здесь.