Как отключить другие флажки при клике (AlertBuilder) - PullRequest
2 голосов
/ 04 декабря 2011

Итак, у меня есть этот код для отображения MultiChoiceItem, однако эти пункты также включают опции «Всегда» и «Никогда».Если один из них выбран, все остальные флажки должны быть отключены (или включены, если опция снова не отмечена).

Проблема в том, как я могу получить доступ к флажкам?Насколько я понимаю, у них тоже нет идентификатора, поэтому я не могу получить к ним доступ с помощью findViewById() (или они?)

Код, который я использую для всплывающего окна, приведен ниже,хотя вам, вероятно, это не нужно.

И просто для наглядности я добавил также скриншот.Таким образом, в случае нажатия «Всегда», метод должен выделять все остальные элементы серым цветом, но оставлять состояние проверки.

Спасибо!

enter image description here

private void createPopup(boolean[] selected) {
    final CharSequence[] items = getResources().getStringArray(R.array.cb_Entries);
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(getString(R.string.l_active));
    builder.setMultiChoiceItems(items, selected, new OnMultiChoiceClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which, boolean isChecked) {
            stateSelectedItems[which] = isChecked;
        }
    });

    builder.setPositiveButton(getString(R.string.b_okay), dialogListener);
    builder.setNegativeButton(getString(R.string.b_cancel), dialogListener);
    AlertDialog alert = builder.create();
    alert.show();
}

/ edit: Итак, благодаря littleFluffyKitty, я могу выделить серые флажки, но они по-прежнему доступны для щелчка (и меняют свои значения!), даже когда используется setClickable(false).

Это код, который яиспользование:

popUpDialog.getListView().getChildAt(i).setEnabled(enable);

1 Ответ

0 голосов
/ 04 декабря 2011

Класс AlertDialog имеет метод с именем getListView () .При этом вы можете получить доступ к ListView, который содержит проверяемые параметры.Оттуда вы, так как вы знаете порядок списка, вы можете получить нужные вам строки и затем установить на них setEnabled (false);

...