How to get setMultiChoiceItems elements from my AlertDialog?

I am using the following code from 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();

In /* User clicked Yes so do some stuff */I do not get the variable isChecked. However, I am provided with isChecked in the section /* User clicked on a check box do some stuff */. Obviously, I do not want to update my SharedPrefs when I click on the checkbox if the user hits cancel.

So how do I set checkboxes and values ​​in setPositiveButtononClick?

Thank.

+3
source share
3 answers

Pass the link byte[]to setMultiChoiceItems().

    final boolean[] booleans = {false, true, false, true, false, false, false};

Then check the value booleansinside setPositiveButton().

If you need to pass this one AlertDialog, then stretch AlertDialogand create the field booleanas described in 1.

+2
source

getListView() AlertDialog. listView. .. .create() , AlertDialog.

:

 1. getCheckItemPositions:SparseBooleanArray
 2. getCheckedItemIds:long[]

-. 10-15 .

+5

, setMultiChoiceItems AlertDialog.Builder, DialogInterface.OnMultiChoiceClickListener onClick. checkedItems AlertController (.. setPositiveButton)

AlertController:

...    
} else if (mOnCheckboxClickListener != null) {
        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView parent, View v, int position, long id) {
                if (mCheckedItems != null) {
                    mCheckedItems[position] = listView.isItemChecked(position);
                }
                mOnCheckboxClickListener.onClick(
                        dialog.mDialogInterface, position, listView.isItemChecked(position));
            }
        });
    }
...
0

Source: https://habr.com/ru/post/1774471/


All Articles