Как запомнить выбранные значения в диалоговом окне 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, вторым аргументом является логический массив, в котором вы устанавливаете, какие элементы проверяются, а какие нет. Вы передаете ноль, поэтому ничего не будет проверено.