如何初始化选择每个选项的多选警报对话框?
问题描述:
目前我有一个多个选择框的警告对话框,我想在用户打开对话框时检查所有的选择框。我已经找到了,但是找不到首先显示对话框的方式来选择所有选择框。如何初始化选择每个选项的多选警报对话框?
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.custom_dialog);
builder.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) {
if (isChecked) {
selectedItems.add(indexSelected);
}
else if (selectedItems.contains(indexSelected)) {
selectedItems.remove(Integer.valueOf(indexSelected));
}
}
}).setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// TODO
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
filterDialog.dismiss();
}
});
filterDialog = builder.create();
filterDialog.show(); // only works when I show the dialog first, but I want every option to be selected without showing first
ListView list = filterDialog.getListView();
for (int i = 0; i < list.getCount(); i++) {
list.setItemChecked(i, true);
selectedItems.add(Integer.valueOf(i));
}
}
这将立即打开对话框并选择所有选择框。有没有什么办法可以在不显示对话框的情况下选择所有框?
答
您可以将生成器中选中的项目PARAMS本身喜欢这个,
boolean[] checkedItems = new boolean[items.lengthh];
for (int i = 0; i < items.length; i++) {
if (selectedItems.contains(i)) {
checkedItems[i] = true;
} else {
checkedItems[i] = false;
}
}
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) {
if (isChecked) {
selectedItems.add(indexSelected);
}
else if (selectedItems.contains(indexSelected)) {
selectedItems.remove(Integer.valueOf(indexSelected));
}
}
}).setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// TODO
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
filterDialog.dismiss();
}
});
感谢这个工作! – Denny