Как проверить, какие флажки отмечены, а какие нет? - PullRequest
0 голосов
/ 07 мая 2018

Я нашел в Stackoverflow, как создать диалоговое окно оповещений с флажками. Это сработало очень хорошо. Моя проблема в том, как я могу проверить, какие из флажков отмечены или нет? Я использую флажки, чтобы установить имя файла текстового файла, который сохраняется.

final CharSequence[] items = {" Custom/Default Filename ", "With Date&Time "," With this device's model "};
// arraylist to keep the selected items
final ArrayList seletedItems=new ArrayList();

AlertDialog dialog2 = new AlertDialog.Builder(Settings.this)
    .setTitle("Select, what export file's name contains")
    .setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) {
            if (isChecked) {
                // If the user checked the item, add it to the selected items
                // write your code when user checked the checkbox
                seletedItems.add(indexSelected);
            } else if (seletedItems.contains(indexSelected)) {
                  // Else, if the item is already in the array, remove it 
                  // write your code when user Uchecked the checkbox
                  seletedItems.remove(Integer.valueOf(indexSelected));
              }
           }
       }).setPositiveButton("OK", new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int id) {
                  // What I should to in this step, to detect which checkboxes are checked and which are not? That's my problem.                 
                  //  Your code when user clicked on OK
                  //  You can write the code  to save the selected item here
              }
          }).create();
     dialog2.show();

1 Ответ

0 голосов
/ 07 мая 2018

Вместо использования общего списка используйте список логических значений и сохраните в нем ischecked как

final List<Boolean> seletedItems = Arrays.asList(false,false,false)
// or final List<Boolean> seletedItems = new ArrayList<>();
// for(int i =0;i<items.length;i++){seletedItems.add(false);}

и сохранить данные как соответствующий индекс

public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) {
        seletedItems.set(indexSelected,isChecked);
  // add boolean check at the particular position 
}

Примечание: размер списка равен размеру массива, чтобы сохранить выбор в соответствии с позицией

поэтому предположим, что пользователь выбрал 0,2, тогда seletedItems будет иметь

index      value
 0          true
 1          false
 2          true

Вы также можете использовать массив boolean, чтобы быть более эффективным

...