Comment obtenir la vue d'un élément de liste?
J'ai deux ListViews (A et B) avec les objets de même type (une classe que j'ai créée)
Quand je clique sur un élément de l'Un, il ajoute cet objet sur B et si je clique à nouveau, il le supprime.
Seulement que lorsqu'un élément est sélectionné, j'ai changer son fond à l'aide de la vue.setBackgroundColor(myColor).
Je veux être en mesure de supprimer l'élément de la liste B (ça fonctionne), mais je veux aussi de remettre à zéro la couleur d'arrière-plan. Je ne peux pas comprendre comment obtenir le point de vue de ce point, je suis retrait.
Des idées?
Si vous montrez nous un peu de votre code (la partie), il sera beaucoup plus facile pour vous aider.
J'ai oublié de mentionner que je utilisez les onglets pour basculer entre les listes. Concernant le code, il n'y a rien de bien compliqué, j'ai étendu ArrayAdapters, et onClick j'utilise la vue.setBackgroundColor(myColor)
J'ai oublié de mentionner que je utilisez les onglets pour basculer entre les listes. Concernant le code, il n'y a rien de bien compliqué, j'ai étendu ArrayAdapters, et onClick j'utilise la vue.setBackgroundColor(myColor)
OriginalL'auteur Lucas | 2011-03-25
Vous devez vous connecter pour publier un commentaire.
Il n'y a aucune garantie que des élément de liste, vous aurez un point de vue à un moment donné. Si l'élément est actuellement hors de l'écran, alors il peut ne pas avoir un point de vue. Depuis un élément spécifique peut ne pas avoir de point de vue, il ne pourrait pas faire tout les sens pour essayer d'obtenir le point de vue.
Au-delà, en raison de la façon ListView crée et réutilise les points de vue, vous verrez certains bizarres, des effets indésirables si vous il suffit de modifier les points de vue directement. En tant que l'utilisateur fait défiler la liste, les éléments qui deviennent visibles à tort, jusqu'à la fin avec les mêmes origines que d'autres éléments qui sont tombés en dehors de la partie visible.
Je ne sais pas si ce qui suit est la meilleure façon de mettre en œuvre votre fonctionnalité, car je ne connais pas le coût de la reconstruction de la liste après un changement. Voici la (probablement naïf), je ferais ceci:
isInSecondList
.getView()
dans l'Adaptateur. DansgetView()
, définir l'arrière-plan soit normale ou mis en évidence en fonction de la valeur de l'élémentisInSecondList
.notifyDataSetChanged()
.Je n'ai pas ajouter le booléen, au lieu de cela, j'ai vérifié si la liste contient l'objet. Comme pour les étapes 2 et 3 j'ai fait ce que vous avez suggéré et il fonctionne parfaitement. Merci!
je pense que la réponse à la question 3 est le meilleur moyen pour obtenir de l'afficher dans la vue liste
OriginalL'auteur erichamion
OriginalL'auteur ngocquynh_183
Voici ce que j'ai fait
View newsItemView = mGridVIew.getChildAt(position);
sa raison, la vue de la liste de calculer la position à partir du haut de l'élément considéré dans l'écran pas dans la listeOriginalL'auteur nvinayshetty