Отметить / снять отметку с элементов в OnMultiChoiceClickListener.onClick? - PullRequest
0 голосов
/ 10 мая 2011

Я создаю множественный выбор AlertDialog, используя AlertDialog.Builder и setMultiChoiceItems.

Я хочу отмечать / снимать отметки с элементов внутри OnMultiChoiceClickListener, но не могу найти, как.

Вот мой код:

final List<User> users = Util.getUsers();
final String[] names = new String[users.size()];
final boolean[] checked = new boolean[users.size()];
for (int i=0; i < names.length; i++) {
    names[i] = users.get(i).getName();
    checked[i] = selectedUsers.contains(users.get(i).getId());
}
new AlertDialog.Builder(EventFormActivity.this)
    .setTitle(R.string.schedule_for)
    .setOnCancelListener(new DialogInterface.OnCancelListener() {
        @Override
        public void onCancel(DialogInterface dialog) {
            updateScheduleForText();
        }
    })
    .setMultiChoiceItems(names, checked, new DialogInterface.OnMultiChoiceClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which, boolean isChecked) {
            if (isChecked) selectedUsers.add(users.get(which).getId());
            else selectedUsers.remove((Integer) users.get(which).getId());
            // check or uncheck other items? how?
        }
     })
     .show();

Единственный способ увидеть, как я могу это сделать, - реализовать пользовательский ListAdapter или даже пользовательский диалог Activity.1014 *

Ответы [ 2 ]

1 голос
/ 10 мая 2011

Интерфейс DialogInterface, который вы получаете в методе OnClick, должен быть AlertDialog.Затем вы можете использовать функцию getButton , чтобы получить объекты кнопок, и вы сможете манипулировать различными кнопками оттуда.

РЕДАКТИРОВАТЬ: я думаю, я понимаю проблему сейчас, вы собираетесьхотеть работать с ListView При составлении примера я обнаружил, что уже решен на SO В этом примере показано, как проверять / снимать отметки с элементов списка из OnMultiChoiceClickListener

0 голосов
/ 22 апреля 2013

Попробуйте это: Как снять отметки с элементов в AlertDialog (setMultiChoiceItems)? .

AskMeSelected[which] = false;
alertDialogList.setItemChecked(which, false);

Не забудьте также установить для соответствующей позиции логического массива значение false.

...