1

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) {
        }
    });
4

2 回答 2

0

我认为您正在列表视图项目中实现复选框,因此您可以查看此答案。 https://stackoverflow.com/a/10896140/6869491 希望它会有所帮助

于 2017-08-02T05:25:32.457 回答
-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. 

                    }
                }

请注意,我只显示了您的代码的 1 部分,因此只能使用setMultiChoiceItems方法内的内容。否则你可能不得不自己照顾牙套:)

于 2017-08-02T05:23:48.523 回答