Aller au contenu

[RESOLU] Problème de répétition d'éléments dans une liste graphique


Morphée

Recommended Posts

Bonjour à tous !

J'ai cherché une réponse à mon problème sur Google et Frandroid, mais rien trouvé. Erreur incompréhensible.....

Je vous explique : j'ai une classe qui hérite de BaseAdapter pour gérer une liste d'éléments; classique. Le problème c'est que dans ma liste, dans mon exemple, j'ai 25 éléments qui doivent être affichés. Android m'affiche bien 25 éléments dans la liste, mais il s'agit d'une répétition des 9 premiers éléments !!!! Dans un exemple où la liste contient 10 éléments, répétition des 5 premiers. J'ai bien implémenté la méthode getCount() et voici ma méthode getView(int position, View convertView, ViewGroup parent)

public View getView(int position, View convertView, ViewGroup parent) {
	TextView item;
	Log.i("RRRRRRRRRRRRR", position+" -- "+m_patients.get(position).getName()+" -- "+m_patients.size());
	if (convertView == null) {
		item = new TextView(m_context);
		item.setText(m_patients.get(position).getName());
		item.setTextAppearance(m_context, R.style.patient_list_item);
	}  
	else {  
		item = (TextView)convertView;
	}
	return item;
}

C'est une méthode toute simple ! Le Log.i m'informe que la méthode est appelée 9 fois dans le premier exemple et 5 dans le deuxième.

Quelqu'un sait-il d'où vient le problème ?

Merci par avance !!!!

Lien vers le commentaire
Partager sur d’autres sites

Premier élément de réponse : getview() n'est appelé que pour le nombre maximum d'éléments affichables à l'écran. Bon, çà s'est bien foutu.

Ensuite quand on scroll la liste, on voit bien grâce au log que le programme explore le reste de la liste sans répétition ...... sauf à l'écran ! La répétition des valeurs n'intervient qu'à l'affichage. Je cherche donc la solution pour rafraîchir le tout après un scroll (notifyDataSetChanged dans getView ne fonctionne pas...).

Lien vers le commentaire
Partager sur d’autres sites

Problème résolu. J'ai modifié le getView() et tout va bien. Voici le nouveau code.

public View getView(int position, View convertView, ViewGroup parent) {
	TextView item;
	Log.i("RRRRRRRRRRRRR", position+" -- "+m_patients.get(position).getName()+" -- "+m_patients.size());
	item = new TextView(m_context);
	item.setText(m_patients.get(position).getName());
	item.setTextAppearance(m_context, R.style.patient_list_item);
	return item;
}

Si çà peut aider quelqu'un ;-)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...