Morphée Posté(e) 4 novembre 2010 Posté(e) 4 novembre 2010 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 !!!!
Morphée Posté(e) 4 novembre 2010 Auteur Posté(e) 4 novembre 2010 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...).
Morphée Posté(e) 4 novembre 2010 Auteur Posté(e) 4 novembre 2010 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 ;-)
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.