如何记住多项选择警报对话框中的选定值?
How to remember selected values in Multiple choice Alert Dialog?
我正在使用带多项选择的 AlertDialog 来显示可检查项目列表。
当用户选择一些值时,我可以获得他们的索引并将其保存到列表中。那工作正常。
但我希望当用户再次打开 AlertDialog 时具有他之前选择的 selected/checked 个值。
代码如下:
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();
图片如下:
builder.setMultiChoiceItems
中的第二个参数是您当前作为 null 传入的 boolean[]
。要在打开时将项目显示为已选中,请在该数组中传递 true
在您要检查的每个项目的位置。这些值可以在使用 boolean[position] = value
创建数组后设置
如果您查看 setMultiChoiceItems 的文档,第二个参数是布尔数组,您可以在其中设置检查哪些项目,哪些不检查。您传递的是 null,因此不会检查任何内容。
我正在使用带多项选择的 AlertDialog 来显示可检查项目列表。
当用户选择一些值时,我可以获得他们的索引并将其保存到列表中。那工作正常。
但我希望当用户再次打开 AlertDialog 时具有他之前选择的 selected/checked 个值。
代码如下:
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();
图片如下:
builder.setMultiChoiceItems
中的第二个参数是您当前作为 null 传入的 boolean[]
。要在打开时将项目显示为已选中,请在该数组中传递 true
在您要检查的每个项目的位置。这些值可以在使用 boolean[position] = value
如果您查看 setMultiChoiceItems 的文档,第二个参数是布尔数组,您可以在其中设置检查哪些项目,哪些不检查。您传递的是 null,因此不会检查任何内容。