2016-11-20 9 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

関連する問題