Флажки становятся недоступными в диалоге при прокрутке
Я использую AlertDialog.Builder.setMultiChoiceItems
показывать флажки с текстами. Я могу отображать отмеченные элементы успешно, но всякий раз, когда я прокручиваю их вниз или вверх, некоторые из них становятся случайно неконтролируемыми. Ниже мой код.
Что я могу сделать, чтобы это исправить? Любая помощь приветствуется!
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title")
.setMultiChoiceItems(items, selectedItems,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
selected[which] = isChecked;
}
})
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
})
.setNegativeButton(R.string.preklici, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
}
});
2 ответа
Я думаю, что вы реализуете флажок в списке View item, чтобы вы могли пройти через этот ответ. https://stackru.com/a/10896140/6869491 надеюсь, что это поможет
Вам необходимо обработать состояние проверки флажка в коде. Создать список уже выбранных предметов
Так создай ArrayList<Integer> selList=new ArrayList();
тогда на вашем setMultiChoiceItems
сделайте следующее -
.setMultiChoiceItems(items, selectedItems,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
// If user select a item then add it in selected items
selectedItems.add(which);
multichoiceDialog.getListView().setItemChecked(which, isChecked);// You can tell the dialog to update its state here.
}
}
Обратите внимание, что я показал только 1 часть вашего кода, поэтому используйте только содержимое внутри setMultiChoiceItems
метод. В противном случае вам, возможно, придется самостоятельно ухаживать за брекетами:)