簡體   English   中英

滾動時,對話框中的復選框變為未選中狀態

[英]Checkboxes become unchecked in Dialog when scrolling

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

我認為您正在實現列表視圖項中的復選框,以便可以通過此答案。 https://stackoverflow.com/a/10896140/6869491希望它會有所幫助

您需要處理代碼中復選框的檢查狀態。 創建已選擇項目的列表

因此,創建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方法中的內容。 否則,您可能需要自己照顧大括號:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM