我正在使用AlertDialog.Builder.setMultiChoiceItems
来显示带有文字的复选框。我可以成功显示已检查的项目,但每当我向下或向上滚动时,其中一些项目将随机取消选中。以下是我的代码。
我该怎么做才能解决这个问题?任何帮助表示赞赏!
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title")
.setMultiChoiceItems(items, selectedItems,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
selected[which] = isChecked;
}
})
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
})
.setNegativeButton(R.string.preklici, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
}
});
答案 0 :(得分:0)
我认为您正在列表视图项中实施复选框,以便您可以完成此答案。 https://stackoverflow.com/a/10896140/6869491 希望它会有所帮助
答案 1 :(得分:-1)
您需要处理代码中复选框的检查状态。创建已选择项目的列表
然后创建ArrayList<Integer> selList=new ArrayList();
,然后在setMultiChoiceItems
上执行以下操作 -
.setMultiChoiceItems(items, selectedItems,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which,
boolean isChecked) {
// If user select a item then add it in selected items
selectedItems.add(which);
multichoiceDialog.getListView().setItemChecked(which, isChecked);// You can tell the dialog to update its state here.
}
}
请注意我只显示了您的一部分代码,因此仅使用setMultiChoiceItems
方法中的内容。否则你可能需要自己照顾牙箍:)