2016-11-20 53 views
0

目前我有一个多个选择框的警告对话框,我想在用户打开对话框时检查所有的选择框。我已经找到了,但是找不到首先显示对话框的方式来选择所有选择框。如何初始化选择每个选项的多选警报对话框?

AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.custom_dialog); 
    builder.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) { 
      if (isChecked) { 
       selectedItems.add(indexSelected); 
      } 
      else if (selectedItems.contains(indexSelected)) { 
       selectedItems.remove(Integer.valueOf(indexSelected)); 
      } 
     } 
    }).setPositiveButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int id) { 
     // TODO 
     } 
    }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int id) { 

      filterDialog.dismiss(); 
     } 
    }); 
    filterDialog = builder.create(); 
    filterDialog.show(); // only works when I show the dialog first, but I want every option to be selected without showing first 
    ListView list = filterDialog.getListView(); 
    for (int i = 0; i < list.getCount(); i++) { 
     list.setItemChecked(i, true); 
     selectedItems.add(Integer.valueOf(i)); 
    } 
} 

这将立即打开对话框并选择所有选择框。有没有什么办法可以在不显示对话框的情况下选择所有框?

回答

1

您可以将生成器中选中的项目PARAMS本身喜欢这个,

boolean[] checkedItems = new boolean[items.lengthh]; 

for (int i = 0; i < items.length; i++) { 
    if (selectedItems.contains(i)) { 
     checkedItems[i] = true; 
    } else { 
     checkedItems[i] = false; 
    } 
} 

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) { 
       if (isChecked) { 
        selectedItems.add(indexSelected); 
       } 
       else if (selectedItems.contains(indexSelected)) { 
        selectedItems.remove(Integer.valueOf(indexSelected)); 
       } 
      } 
     }).setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int id) { 
       // TODO 
      } 
     }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int id) { 

       filterDialog.dismiss(); 
      } 
     }); 
+0

感谢这个工作! – Denny