Change la couleur de fond de l'élément sélectionné dans un contrôle ListView

Je veux savoir comment je peux changer la couleur d'arrière-plan de l'élément sélectionné sur ma liste. Je veux seulement changer l'élément cliqué par l'utilisateur, de sens que si l'utilisateur clique sur un autre élément, il sera celui qui est mis en évidence. Eh bien, puisque je veux rester simple que possible et d'utiliser la valeur par défaut d'android listview j'ai utilisé ce code à la place:

record_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                try{
                    for (int ctr=0;ctr<=record_items.length;ctr++){
                        if(i==ctr){
                            record_list.getChildAt(ctr).setBackgroundColor(Color.CYAN);
                        }else{
                            record_list.getChildAt(ctr).setBackgroundColor(Color.WHITE);
                        }
                    }
                }
                catch (Exception e){
                    e.printStackTrace();
                }
                Log.v("Selected item",record_list.getItemAtPosition(i));
            }
        });

Ok c'est un travail mais le problème est que c'est lent. Maintenant, je veux savoir si il y a d'autre sens que je peux faire ce qui va donner le même résultat que j'ai fait.

J'ai essayé d'utiliser record_list.getSelectedView().setBackgroundColor(Color.CYAN); mais il me donne une exception de pointeur null.

J'ai aussi essayé la selector.xml mais il ne voulait pas faire l'affaire.
En outre, il est l'une des propriétés sur ListView qui est appelé listSelector. C'est un drawable comme le dit la documentation "Drawable utilisé pour indiquer l'élément actuellement sélectionné dans la liste." Je crois aussi que cela devrait faire l'affaire et oui il faire l'affaire sur mon émulateur mais pas sur ma galaxy tab. J'ai aussi essayé les autres méthodes, mais rien ne fonctionne comme je le voulais.

  • l'utilisation de fichier xml pour listview pour que..
  • avez-vous coché cette option, la liste.setSelector(R. drawable.detail_hover); où mon deatil_hover est la .png drawable. essayez cela, j'espère que cela va vous aider.
  • vous obtenez un objet de vue dans onitem cliquez sur, pour changer la couleur d'arrière-plan de ce point de vue et l'enregistrer en tant que prvsselected vue sur suivant cliquez sur vérifier prvsselect vue est null ou pas, si elle n'est pas null, alors le changement de couleur par défaut
  • Cette méthode n'aboutit pas pour des listes de plus de 1 hauteur de l'écran.
  • Solution efficace en 2 lignes: stackoverflow.com/questions/16976431/...
InformationsquelleAutor KaHeL | 2013-06-07