2016-10-14 3 views
0

В моем коде я могу выбрать флажок элементы и установить их в моем массиве:setMultiChoiceItems и мой массив

protected ArrayList<Integer> selectedStatusId = new ArrayList<>();

Но когда я выбираю тот же пункт флажок, нужно не удалит из моего массива и ... Я cna't сделать это, потому что id в моем массиве отличается от моего mStatuses. Как удалить желаемый элемент?

Возможно, я смогу получить все выбранные элементы после нажатия кнопки «Добавить»?

 final ArrayList<String> statusesTitles = new ArrayList<>(); 
     for (int i = 0; i < mStatuses.size(); i++) { 
      statusesTitles.add(mStatuses.get(i).StatusTitle); 
     } 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setTitle(R.string.order_dialog_status_title) 
       .setMultiChoiceItems(statusesTitles.toArray(new String[statusesTitles.size()]), null, new DialogInterface.OnMultiChoiceClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i, boolean b) { 
         if (b){ 
          selectedStatusId.add(mStatuses.get(i).StatusId); 
         } else { 
          // TODO How I can delete my position from array? 
         } 
        } 
       }) 
       .setPositiveButton(R.string.order_dialog_status_positive_button, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 
         refreshContent(); 
        } 
       }) 
       .setNegativeButton(R.string.order_dialog_status_negative_button, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 
         dialogInterface.cancel(); 
        } 
       }); 
     builder.show(); 

ответ

1

Вы можете удалить элемент следующего способом.

ArrayList<Integer> selectedStatusId = new ArrayList<>(); 
    if (true){ 
     selectedStatusId.add(mStatuses.get(i).StatusId); 
    } else { 
     // delete the first occurrence of the specified element from array 
     selectedStatusId.remove(new Integer(mStatuses.get(i).StatusId)); 
    } 
0
final ArrayList<String> selectedStatusId = new ArrayList<>(); 
     //MAKE IT STRING TYPE 

     final ArrayList<String> statusesTitles = new ArrayList<>(); 
     for (int i = 0; i < mStatuses.size(); i++) { 
      statusesTitles.add(mStatuses.get(i).StatusTitle); 
     } 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setTitle(R.string.order_dialog_status_title) 
       .setMultiChoiceItems(statusesTitles.toArray(new String[statusesTitles.size()]), null, new DialogInterface.OnMultiChoiceClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i, boolean b) { 
         if (b) { 
          selectedStatusId.add(String.valueOf(mStatuses.get(i).StatusId)); 
         } else { 
          // TODO How I can delete my position from array? 
          selectedStatusId.remove(String.valueOf(mStatuses.get(i).StatusId)); 
         } 
         //OR_______________________YOU CAN USE THIS ALSO 
//      if (selectedStatusId.contains(String.valueOf(mStatuses.get(i).StatusId))) { 
//       selectedStatusId.remove(String.valueOf(mStatuses.get(i).StatusId)); 
//      } else { 
//       selectedStatusId.add(String.valueOf(mStatuses.get(i).StatusId)); 
//      } 
        } 
       }) 
       .setPositiveButton(R.string.order_dialog_status_positive_button, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 
         refreshContent(); 
        } 
       }) 
       .setNegativeButton(R.string.order_dialog_status_negative_button, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 
         dialogInterface.cancel(); 
        } 
       }); 
     builder.show(); 

Надеется, что это помогает ..

Смежные вопросы