2016-10-14 3 views
0

setMultiChoiceItemsと私は、チェックボックスの項目を選択して、私の配列に自分を設定することができ、私のコードでは、私の配列

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

しかし、私は同じチェックボックスの項目を選択したとき、私の配列からそれをDELET必要と... I私の配列の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(); 

・ホープ..

関連する問題