2010-12-08 4 views
0

J'ai une vue de liste, et la vue de ligne a 2 vues enfants: une vue d'image et une vue de texte. La vue de l'image est actionnable. Les deux vues enfants ont un sélecteur. Mon problème est que lorsque j'appuie sur la vue de texte, la vue de l'image est également sélectionnée. Est comme la vue de ligne transmet l'état sélectionné à ses enfants. Comment puis-je supprimer cela pour que chaque vue enfant soit sélectionnée indépendamment?Sélecteur pour la vue enfant de la ligne listview

Meilleures salutations, Gratzi

Répondre

0

dans le fichier XML pour listview utilisation android:listSelector="@null". Si cela ne fonctionne pas alors dans l'adaptateur, vous pouvez remplacer 2 méthodes pour y parvenir,

 @Override 
     public boolean isEnabled(int position) 
     { 
      return false; 
     } 

     @Override 
     public boolean areAllItemsEnabled() 
     { 
      return false; 
     } 

Cela supprimera la sélection qui se produit pour la ligne. Mais pour que le point culminant se produise séparément, vous devrez écrire un statelist ou le gérer manuellement.

+0

Le premier n'a pas fonctionné. La seconde est comme tu l'as dit. Il supprime la sélection pour la ligne de liste et seule la vue de l'image est sélectionnable et exploitable. Le plus drôle est que la vue de l'image change d'état et que la vue de texte ne l'est pas. Je pense que c'est parce que la vue de l'image a la méthode setOnClickListener appelée. Ce que je veux est: 2 actions séparées vue d'image et rangée de liste; 2 sélecteurs séparés: vue de l'image et affichage du texte. Est-ce possible? – Gratzi

0

Je l'ai fait en créant un écouteur pour la vue de texte, et en déplaçant le code de l'écouteur de vue de liste dans l'écouteur de vue de texte. De cette façon, l'événement pressé n'atteindra pas la vue de ligne et la ligne ne le déléguera pas à la vue de l'image. Je ne suis pas entièrement satisfait de cette solution parce que je dois créer un écouteur pour la vue texte chaque fois qu'une ligne de liste est créée (chaque fois que la méthode bindView est appelée), mais c'est la meilleure solution que j'ai pu trouver.

Questions connexes