2017-01-31 3 views
0

J'essaie d'utiliser une boîte de dialogue qui affiche une ArrayList en utilisant multiChoiceItems. Je veux vérifier quels éléments je veux enlever, cliquer sur un bouton pour enlever/fermer la boîte de dialogue et faire enlever les éléments la prochaine fois que j'ouvre la boîte de dialogue.Suppression d'éléments de l'interface de dialogue multiChoiceItems ne fonctionnant pas

Lorsque je débogue le code ci-dessous, je trouve que je parcours la boucle pour chaque élément sélectionné mais aucun des éléments n'est réellement supprimé. Je me sens comme si je manquais quelque chose probablement assez trivial ici et j'aimerais de l'aide!

Je sais que je dois prendre en compte les changements d'index si je supprime plusieurs éléments, donc ne vous inquiétez pas à ce sujet. Je ferai cela après que je puisse retirer un premier article par lui-même!

Merci beaucoup!

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

Je peux supprimer des éléments si je spécifie directement l'index. Ex: arrayChoices.remove (0). Donc, je suppose que cela ne reconnaît peut-être pas mon argument remove comme un entier, mais je ne sais pas pourquoi cela ne fonctionne pas. Quelqu'un a l'explication pour ça? – lhbortho

Répondre

0

Coulée mSelectedItems.get (i) à int et cela a fonctionné. Il montre mSelectedItems.get (i) est un entier dans le débogage bien que ce qui me fait me demander pourquoi cela ne fonctionnait pas déjà.