2013-07-19 3 views
0

J'ai une liste avec une liste de choix multiples. La liste est remplie par certaines données. J'ai implémenté du code pour la suppression des éléments cochés. Donc, je me demande s'il est possible d'obtenir la liste des éléments sélectionnés et non sélectionnés avec leurs légendes avant de les supprimer?Récupérer les éléments cochés dans ListView

Voici le code pour la suppression d'éléments vérifiés:

public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Button btnDel = (Button) findViewById(R.id.btnDel); 

    adapter = new ArrayAdapter<String>(this,Android.R.layout.simple_list_item_multiple_choice, list); 

    OnClickListener listenerDel = new OnClickListener() { 
     @Override 
     public void onClick(View v) {    
      SparseBooleanArray checkedItemPositions = getListView().getCheckedItemPositions(); 
      int itemCount = getListView().getCount(); 

      for(int i=itemCount-1; i >= 0; i--){ 
       if(checkedItemPositions.get(i)){       
        adapter.remove(list.get(i)); 
       } 
      } 
      checkedItemPositions.clear(); 
      adapter.notifyDataSetChanged(); 
     } 
    };    

    btnDel.setOnClickListener(listenerDel);  
    setListAdapter(adapter); 
} 

Répondre

1

Oui, il est possible. Il suffit d'incorporer ce code;

ArrayList<Object> myCheckedItems = new ArrayList<Object>(); 

OnClickListener listenerDel = new OnClickListener() { 
    @Override 
    public void onClick(View v) {    
     SparseBooleanArray checkedItemPositions = getListView().getCheckedItemPositions(); 
     int itemCount = getListView().getCount(); 

     for(int i=itemCount-1; i >= 0; i--){ 
      if(checkedItemPositions.get(i)){ 
       myCheckedItems.add((list.get(i));      
       adapter.remove(list.get(i)); 
      } 
     } 
     checkedItemPositions.clear(); 
     adapter.notifyDataSetChanged(); 
    } 
};    
+0

Merci, c'est exactement ce dont j'avais besoin. Juste une question de plus; si je charge plus de données dans listview, je veux dire si j'ai plus de champs - chaque rangée avec 2 editboxes supplémentaires dois-je utiliser un adaptateur personnalisé ou il peut être résolu avec quelques modifications de code d'en haut? Cela signifie que si je vérifie certains éléments, je veux obtenir des données de editbox supplémentaires liées à chaque élément? – Josef

+1

C'est toujours bon d'être générique, car vous pouvez le modifier en fonction de vos besoins (au moins, pour autant que je crois). Donc, un BaseAdapter est toujours une bonne option. –

Questions connexes