2017-01-31 4 views
0

Я пытаюсь использовать диалог, который показывает ArrayList, используя multiChoiceItems. Я хочу проверить, какие элементы я хочу удалить, нажмите кнопку, чтобы удалить/закрыть диалоговое окно и удалить элементы при следующем открытии диалогового окна.Извлечение элементов из диалогового интерфейса multiChoiceItems не работает

Когда я отлаживаю код ниже, я нахожу, что я просматриваю цикл для каждого выбранного элемента, но ни один из элементов не удаляется. Я чувствую, что мне не хватает чего-то, возможно, довольно тривиального здесь, и я бы очень хотел помочь!

Я знаю, что я должен учитывать изменения индексов, если я удаляю несколько элементов, поэтому не беспокойтесь об этом. Я сделаю это после того, как я смогу удалить первый элемент самостоятельно!

Большое спасибо!

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
      builder.setTitle("Title"); 
      mSelectedItems.clear(); 
      builder.setMultiChoiceItems(myList,null, 
        new DialogInterface.OnMultiChoiceClickListener(){ 

         @Override 
         public void onClick(DialogInterface dialog,int which, boolean isChecked){ 
          if (isChecked) { 
           // If the user checked the item, add it to the selected items 
           mSelectedItems.add(which); 
          } else if (mSelectedItems.contains(which)) { 
           // Else, if the item is already in the array, remove it 
           mSelectedItems.remove(Integer.valueOf(which)); 
          } 

         } 
        }); 

      builder.setPositiveButton("Remove from list", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        for(int i=0;i<mSelectedItems.size();i++){ 
         arrayChoices.remove(mSelectedItems.get(i)); 
        } 
        myList = arrayChoices.toArray(new CharSequence[arrayChoices.size()]); 
       } 
      }); 

      builder.setNegativeButton("End", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.cancel(); 
       } 
      }); 


      builder.show(); 
+0

Я могу удалить элементы, если я укажу индекс напрямую. Пример: arrayChoices.remove (0). Поэтому я предполагаю, что это может не признать мой аргумент remove как целое число, но я не уверен, почему это не так. Кто-нибудь получил объяснение? – lhbortho

ответ

0

Отправлено mSelectedItems.get (i) в int, и это сработало. Он показывает, что mSelectedItems.get (i) является целым числом отладки, хотя это заставляет меня задаться вопросом, почему он не работает уже.

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