Set checkbox status in Multichoice AlertDialog on Android

Below is my code for my AlertDialog.Builder

  final String[] values = new String[] {"Select All", "Android", "ios", "windows", "Blackberry"}; final ArrayList<String> selecteditems = new ArrayList<String>(); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("Select your favorite OS"); builder.setMultiChoiceItems(values, null , new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { if (isChecked) { selecteditems.add(String.valueOf(which)); } else { selecteditems.remove(Integer.valueOf(which)); } } }) .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); AlertDialog dialog = builder.create(); dialog.show(); 

What I want to do is determine when the Select All checkbox is checked, which I can use in the isChecked loop. But I want to be able to set all the parameters that will be checked when the user checks "Select All" and removes the checks when the user cancels "Select All".

+5
source share
1 answer

It should be something like the following code. The main checkedItems is to provide the boolean[] checkedItems and update it later when you try to select everything.

  • checkedItems array must be updated (since the dialog still has a link to it.)
  • And dialog.getListView().setItemChecked(i, true); must be called for each item.

     items.add(0, "Select All"); boolean[] checkedItems = new boolean[items.size()]; AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); builder.setTitle(dialogTitle) .setMultiChoiceItems(items.toArray(new String[items.size()]), checkedItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { if(which == 0) { if(isChecked) { multichoiceDialog.getListView().setItemChecked(0, true); checkedItems[0] = true; for(int i=1; i< checkedItems.length; i++) { checkedItems[i] = true; multichoiceDialog.getListView().setItemChecked(i, true); } } } } }) .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }); multichoiceDialog = builder.create(); multichoiceDialog.show(); 
+3
source

All Articles