如何从AlertDialog获取setMultiChoiceItems项?

epo*_*rmd 3 android

我正在使用apidemos中的以下代码..

        return new AlertDialog.Builder(AlertDialogSamples.this)
            .setIcon(R.drawable.ic_popup_reminder)
            .setTitle(R.string.alert_dialog_multi_choice)
            .setMultiChoiceItems(R.array.select_dialog_items3,
                    new boolean[]{false, true, false, true, false, false, false},
                    new DialogInterface.OnMultiChoiceClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton,
                                boolean isChecked) {

                            /* User clicked on a check box do some stuff */
                        }
                    })
            .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {

                    /* User clicked Yes so do some stuff */
                }
            })
            .setNegativeButton(R.string.alert_dialog_cancel, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {

                    /* User clicked No so do some stuff */
                }
            })
           .create();
Run Code Online (Sandbox Code Playgroud)

/* User clicked Yes so do some stuff */,我没有提供isChecked变量..但是,我在/* User clicked on a check box do some stuff */部分给出了isChecked ..显然我不想在复选框点击时更新我的​​SharedPrefs,以防用户点击取消..

那么如何获取setPositiveButtononClick 上的复选框和值?

谢谢.

Sha*_*dul 5

使用AlertDialog类的getListView().并获取listView.即,当你最后调用.create()时,这将获取一个新的AlertDialog.

然后使用以下方法之一:

 1. getCheckItemPositions:SparseBooleanArray
 2. getCheckedItemIds:long[]
Run Code Online (Sandbox Code Playgroud)

我可以为您提供演示代码.给我10-15分钟.

  • 尝试以下方面的内容:`((AlertDialog)aDialogue).getListView().getCheckedItemPositions()`. (3认同)

Pet*_*ego 4

byte[]传递对in 的引用setMultiChoiceItems()

    final boolean[] booleans = {false, true, false, true, false, false, false};
Run Code Online (Sandbox Code Playgroud)

booleans然后检查inside的值setPositiveButton()

如果您需要传递此AlertDialog信息,请扩展AlertDialog并创建一个字段boolean,如 1 中所述。