2010-12-29 5 views

Répondre

26

C'est ce qui a finalement fonctionné pour moi, où je suis à l'aide d'un adaptateur curseur, pas seulement un ArrayListAdapter pour mes articles de la liste:

final ListView list = getListView(); 
for (int i=0; i< getListAdapter().getCount(); i++) { 
     list.setItemChecked(i, true); 
} 

list.getChildCount ne fonctionne pas car il semble que de compter ce qui a été dessiné immédiatement (pas tout ce qui est hors de l'écran), donc childCount ne peut être que de 6 ou 8 éléments lorsque la liste entière est de 100 éléments ou plus. Aussi comme je devais utiliser list.setItemChecked pour obtenir les éléments à «rester vérifiés» - au moins dans mon cas où mes éléments de liste étaient des instances de CheckedTextView.

+0

Comment puis-je travailler avec des boutons comme celui-ci? – Manikandan

+0

merci .. j'ai affronter troble parce que childCount – faruk

21
for(int i=0; i < listView.getChildCount(); i++){ 
    RelativeLayout itemLayout = (RelativeLayout)listView.getChildAt(i); 
    CheckBox cb = (CheckBox)itemLayout.findViewById(R.id.MyListViewCheckBox); 
    cb.setChecked(true); 
} 

Vous devez modifier ce code pour gérer à la fois activer et désactiver, mais j'espère que vous avez l'idée!

En outre, cela ne vérifie que chaque case, assurez-vous que vous renvoyez un ID ou un objet de votre liste afin d'envoyer/enregistrer les données ailleurs.

+0

triés .. merci beaucoup Abhinav .. beaucoup apprecaited –

+1

Ce code crée un comportement étrange lorsque je vérifie tous les éléments, puis décochez un élément. La solution de Thom Nichols est meilleure. – bancer

+0

J'ai des boutons dans ma listview. Lorsque vous cliquez sur un bouton en dehors de la liste, je dois changer l'arrière-plan de tous les boutons présents dans la liste. J'ai utilisé votre code, et j'ai eu une erreur. Comment y parvenir – Manikandan

0

ajoutez simplement un paramètre dans l'adaptateur comme

Boolean Ex.MyAdapter adapter = new Save_Weight_Adapter(this, R.layout.layoutname, array, false); 
listview.setAdapter(adapter); 

sur le bouton Sélectionner tout clic auditeur ajouter ce code

MyAdapter adapter = new Save_Weight_Adapter(this, R.layout.layoutname, array, true); 
listview.setAdapter(adapter); 

et vérifiez dans adpater

if(chk) { 
    blue_check.setVisibility(View.VISIBLE); 
} else { 
    blue_check.setVisibility(View.GONE); 
} 
0

Je pense que vous devriez exécutez cette tâche de longue durée hors du thread d'interface utilisateur. Lorsque vous cliquez sur le bouton dans OnClickListener:

new Thread(new Runnable() { 
        @Override 
        public void run() { 
         for (int i = 0; i < list.getAdapter().getCount(); i++) { 
          final int position = i; 
          mHandler.post(new Runnable() { 
           @Override 
           public void run() { 
            list.setItemChecked(pos, true); 
           } 
          }); 
         } 
        } 
       }).start();  

et onCreate():

this.mHandler = new Handler(); 

Chaque élément de liste devrait être Vérifiable comme CheckableRelativeLayout qui implémente l'interface Vérifiable.

Questions connexes