Флажки становятся недоступными в диалоге при прокрутке

Я использую 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 метод. В противном случае вам, возможно, придется самостоятельно ухаживать за брекетами:)

Другие вопросы по тегам