2010-12-09 31 views
2

Je développe une application de table d'harmonie dans laquelle j'utilise Listview Activity. Mais depuis Listview d'Android a la propriété de recycler ses vues de liste, les modifications que je fais à la sélection de texte se reflète dans toutes les pages tout en faisant défiler la liste. Je ne veux pas que cela arrive. Alors, comment puis-je gérer correctement. Si quelqu'un peut m'aider avec un extrait de code, ce sera très utile et j'apprécie vos efforts. Je vous remercie!Android: gérer ListView Recycle

Edit: Espérons que cela vous expliquera mieux

Ma classe étend ListActivity et ListView est comme suit

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

Maintenant, lorsque l'utilisateur clique sur un 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 tv = (TextView) view; 
//Here I change the image with tv as reference 
final Resources res = getBaseContext().getResources(); 
    final Drawable myImage = res.getDrawable(R.drawable.pause); 
    // myImage. 
    final Drawable myImage1 = res.getDrawable(R.drawable.play); 

    tv.setCompoundDrawablesWithIntrinsicBounds(myImage, null, null, null); 

    MediaPlayer.OnCompletionListener listener = new MediaPlayer.OnCompletionListener(){ 
     public void onCompletion(MediaPlayer mp) { 

     tv.setCompoundDrawablesWithIntrinsicBounds(myImage1, null, null, null); 


     } 
    }; 
} 

Répondre

1

Réponse courte: Demandez à l'adaptateur de votre liste de gérer les mises à jour des données pour rendre les modifications correctement. Autrement dit, remplacez/modifiez la méthode getView() si nécessaire pour savoir comment gérer le changement de données, éditez les données sous-jacentes à votre adaptateur, appelez notifyDataSetChanged(), et laissez ces changements de données se propager aux vues lors de l'appel de getView. À l'heure actuelle, vous modifiez probablement manuellement les vues sans modifier les données sous-jacentes, ce qui constitue une violation des modèles MVC, quels que soient les bits de recyclage de la vue. Cependant, étant donné que vous avez posé la question de manière générique, il serait plutôt difficile de vous donner un échantillon de code adapté à votre cas particulier.

+0

Maintenant j'ai édité ma question. S'il vous plaît, jetez un oeil. Maintenant, pouvez-vous me répondre avec un échantillon de code. Je vous remercie – Vivek