2010-12-09 3 views
2

Je développe une application SoundBoard. Ma classe étend ListActivity et ListView est la suivanteAndroid: Obtenir le TextView dans onItemClickListener() de ListView

[Image] [Text] 
[Image] [Text] 
[Image] [Text] 

Maintenant, lorsque l'utilisateur clique sur une textview, je dois changer l'image de cette textview. Je l'implémente par le code suivant.

public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 

TextView tv1 = (TextView) view; 
//Here I change the image with tv1 as reference 
} 

Mais je besoin d'une autre façon pour obtenir le TextView sélectionné. Parce que lorsque je change l'image en utilisant la méthode ci-dessus, si l'utilisateur sélectionne la troisième rangée dans la liste, l'image change dans la troisième rangée de la deuxième page de défilement, la troisième rangée de la troisième page de défilement et ainsi de suite. les modifications de l'image textview requises, mais une vue de texte dans les pages de défilement à venir est modifiée lors du défilement de la liste. J'espère que vous avez mon problème. Toute aide est appréciée. Merci

Répondre

1

Je pense que le comportement que vous voyez vient du fait Android recycle les TextView utilisés dans ListView; c'est pourquoi Adapter.getView() a comme argument convertView. (Une fois qu'un TextView a sorti de l'écran, il peut être transmis dans Adapter.getView() par l'argument convertView, être réutilisé pour un élément qui a été défilée sur l'écran.)

Vous pourriez essayer d'ajouter android.widget.AbsListView.OnScrollListener à la ListView , pour suivre quels éléments de la liste sont à l'écran à un moment donné. Vous devez probablement également remplacer Adapter.getView() pour forcer l'image à revenir à la valeur par défaut (ou plus généralement, pour utiliser l'image appropriée pour l'élément nouvellement affiché.)

+0

Pouvez-vous m'aider avec le code s'il vous plaît. Parce que je suis un débutant. Et cela me semble complexe. Merci pour votre réponse. – Vivek

+0

Je ne pense pas que cela devrait être difficile à écrire, mais je ne connaîtrais pas suffisamment votre code pour savoir par où commencer. Donnez-lui votre meilleur coup, et si vous rencontrez des problèmes, alors postez le code ici (ou dans une autre question.) –

0

Je n'ai pas testé moi-même, vous pouvez essayer d'en ajoutant onClck attribut dans Textview
<android :onclick="name of function>

Cheers, Kariyachan

+0

Merci pour votre réponse. Cela semble être une bonne idée. Mais comment puis-je obtenir la référence à la vue de texte dans la fonction. La fonction doit-elle inclure des paramètres. – Vivek

+0

oui. Par exemple myfunction (Voir v) alors vous pouvez obtenir l'ID de Textview cliqué par fn getId() faire vos trucs à votre santé, Kariyachan – DroidBot

+0

Pouvez-vous s'il vous plaît m'aider avec le code. Alors que je vais avoir une meilleure idée. Merci. – Vivek