滚动时,复选框在Dialog中取消选中

时间:2017-08-02 05:17:40

标签: android checkbox android-alertdialog multichoiceitems

我正在使用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) {
        }
    });

2 个答案:

答案 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方法中的内容。否则你可能需要自己照顾牙箍:)