我的核对清单有问题。当用户检查其中一个项目并验证时,检查的项目不会被存储。每次打开新对话框时,都会重置清单。
我如何存储它们?
这是我的代码:
else if(position == 1){
final ArrayList<Integer> mSelectedItems = new ArrayList<Integer>();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Titre")
.setMultiChoiceItems(R.array.liste_choix, null,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
if (isChecked) {
mSelectedItems.add(which);
} else if (mSelectedItems.contains(which)) {
mSelectedItems.remove(Integer.valueOf(which));
}
}
})
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
// User clicked OK, so save the mSelectedItems results somewhere
// or return them to the component that opened the dialog
}
})
.setNegativeButton(R.string.annuler, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
}
});
builder.show();
}
答案 0 :(得分:0)
我认为这与mSelectedItems有关。因为上面的所有内容都是在条件之后发生的,所以看起来好像这都是在一个方法中发生的。当您每次进入条件的这一部分时创建新的mSelectedItems实例,每次启动时列表都将为空。我建议你做的是:
(1)实际上使mSelectedItems成为成员或实例变量,如果这是你的意图,这样每次你到达代码的那一部分都不会重新创建
(2)然后你要做的就是检查上次切换方框时选择了哪些方框,就像在this post中一样。