web-dev-qa-db-fra.com

Désélectionner l'élément sélectionné dans ListView

J'utilise un ListView dans ma mise en page comme ceci:

 <ListView Android:id="@+id/list"
              Android:layout_width="fill_parent"
              Android:layout_gravity="center"
              Android:layout_height="match_parent"
              Android:layout_weight="0.7"
              Android:layout_marginTop="5dp"
              Android:orientation="vertical"
              Android:layout_centerInParent="true"
              Android:divider="@color/dark_grey"
              Android:drawSelectorOnTop="false"
              Android:focusable="true"
              Android:layout_marginBottom="55dp"
              Android:cacheColorHint="#00000000"
              Android:listSelector="@color/light_grey"
              Android:dividerHeight="1px" />

Le sélecteur fonctionne très bien, mais comment puis-je le désactiver?

J'ai essayé:

listView.clearChoices();
listView.setSelected();
listView.setSelector();
...

et quelques autres choses mais rien ne fonctionne. Avez-vous des idées sur la façon dont je peux remettre mon article sélectionné à la normale? Ça ne peut pas être si compliqué, non?

Edit: / J'ai besoin d'une solution programmatique!

Merci!

17
Ron

Appelez requestLayout() à la ListView après clearChoices(). Ça va marcher.

32
M-WaJeEh

Comme @Muerte l'a mentionné ci-dessus, cela a fonctionné pour moi:

myListView.clearChoices();
myAdapter.notifyDataSetChanged();

Cela semble être mieux que de redessiner toute la mise en page.

11
Suragch

Pour moi cela a fonctionné avec:

listView.setAdapter(myAdapter);
3

essaye ça 

Créez votre propre fichier XML de sélecteur comme celui-ci 

VotreSecteur.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
  <item Android:state_enabled="false" Android:state_focused="true"
        Android:drawable="@drawable/item_disabled" />
  <item Android:state_pressed="true"
        Android:drawable="@drawable/item_pressed" />
  <item Android:state_focused="true"
        Android:drawable="@drawable/item_focused" />
</selector>

consultez ce lien 

ici

0

Votre ressource de sélection semble être fausse ici. Vous devriez utiliser un dessin sur fond transparent, et je pense que c’est ce qui colore réellement vos lignes, mais pas choiceMode de ListView. Veuillez vérifier ceci une autre réponse pour plus de détails.

0
The Dreams Wind

Dans votre XML où vous déclarez l'utilisation de ListView:

<ListView Android:id="@+id/my_list" Android:listSelector="#00000000" />
0
user2448968

Vous pouvez définir un sélecteur après clic:

<?xml version="1.0" encoding="utf-8"?>

<item Android:drawable="@drawable/transparent_white" Android:state_focused="true" Android:state_pressed="true"/>
<item Android:drawable="@drawable/transparent_white" Android:state_focused="false" Android:state_pressed="true"/>
<item Android:drawable="@drawable/transparent_white" Android:state_focused="true"/>
<item Android:drawable="@drawable/transparent_white" Android:state_focused="false"/>

et le @ drawable/transparent_white est # 00ffffff

0
kvh

Aucune des solutions ne fonctionnait réellement pour moi. Ma liste est destinée à répertorier les éléments recherchés et contient une disposition permettant de refaire la recherche. Pour obtenir le résultat, j'ai ajouté l'extrait de code suivant et cela a fonctionné :) 

myAdapter.setSelectedIndex (-1);

0
Rino