Как запомнить выбранные значения в диалоговом окне Alert с множественным выбором?

Я использую AlertDialog с множественным выбором, чтобы показать список проверяемых элементов.

Когда пользователь выбирает некоторые значения, я могу получить их индекс и сохранить его в списке. Это работает нормально.

Но я хочу, когда пользователь снова откроет AlertDialog, чтобы выбрать / проверить значения, которые он выбрал ранее.

Вот код:

 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setMultiChoiceItems(R.array.array_cousine, null,
            new DialogInterface.OnMultiChoiceClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int indexSelected,
                                    boolean isChecked) {
                    if (isChecked) {
                        seletedItems.add(++indexSelected);
                    } else if (seletedItems.contains(indexSelected)) {   
                        seletedItems.remove(Integer.valueOf(++indexSelected));
                    }
                }
            })
            // Set the action buttons
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {  
                    String[] expList = getResources().getStringArray(R.array.array_cousine);

                    for (int i = 0; i < seletedItems.size(); i++) {
                        int selected = seletedItems.get(i);
                        String selectedString = expList[selected - 1];
                        selectedItemsName.add(selectedString);
                    }

                    StringBuilder stringBuilder = new StringBuilder();

                    for (int j = 0; j < selectedItemsName.size(); j++) {
                        String text = selectedItemsName.get(j);
                         stringBuilder = stringBuilder.append(" "+text);

                    }

                    Log.d("TAG", "String builder: " + stringBuilder);
                    tvCusine.setText(stringBuilder);

                    dialog.dismiss();

                }
            })
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    dialog.dismiss();
                }
            });

    Dialog dialog = builder.create();//AlertDialog dialog;
    dialog.show();

Вот картинка:

введите описание изображения здесь

2 ответа

Решение

Второй параметр в builder.setMultiChoiceItems это boolean[] что вы в настоящее время передаете как ноль. Чтобы показать элементы как отмеченные при открытии, передайте в этот массив true в позиции каждого элемента, который вы хотите проверить. Эти значения могут быть установлены после создания массива с помощью boolean[position] = value

Если вы посмотрите на документы для setMultiChoiceItems, вторым аргументом является логический массив, в котором вы устанавливаете, какие элементы проверяются, а какие нет. Вы передаете ноль, поэтому ничего не будет проверено.

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