Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 9
S’amuser avec les listes 87
if (items[position].length()>4) {
ImageView icon=(ImageView)row.findViewById(R.id.icon);
icon.setImageResource(R.drawable.delete);
}
return(row);
}
}
}
Le principe consiste à redéfinir getView() pour qu’elle renvoie une ligne dépendant de
l’objet à afficher, qui est indiqué par l’indice position dans l’Adapter. Si vous examinez
le code de cette implémentation, vous remarquerez que l’on utilise un objet LayoutInflater,
ce qui mérite une petite explication.
Quelques mots sur l’inflation
Dans notre cas, "inflation" désigne le fait de convertir une description XML dans l’arborescence d’objets View qu’elle représente. Il s’agit indubitablement d’une partie de code
assez ennuyeuse : on prend un élément, on crée une instance de la classe View appropriée ;
on examine tous les attributs pour les convertir en propriétés, on parcourt tous les éléments
fils et on recommence.
Heureusement, l’équipe qui a créé Android a encapsulé ce lourd traitement dans la classe
LayoutInflater. Pour nos listes personnalisées, par exemple, nous voulons obtenir des
Views pour chaque ligne de la liste et nous pouvons donc utiliser la notation XML pour
décrire l’aspect des lignes.
Dans l’exemple précédent, nous transformons la description R.layout.row que nous
avions créée dans la section précédente. Cela nous donne un objet View qui, en réalité,
n’est autre que notre LinearLayout contenant un ImageView et un TextView, exactement
comme cela est spécifié par R.layout.row. Cependant, au lieu de créer nous-mêmes tous
ces objets et de les lier ensemble, le code XML et la classe LayoutInflater gèrent pour
nous les "détails scabreux".
Revenons à nos moutons
Nous avons donc utilisé LayoutInflater pour obtenir un objet View représentant la ligne.
Cette ligne est "vide" car le fichier de description statique ne sait pas quelles sont les
données qu’elle recevra. Il vous appartient donc de la personnaliser et de la remplir
comme vous le souhaitez avant de la renvoyer. C’est la raison pour laquelle :
● On place le texte du label dans notre widget label en utilisant le mot situé à la position
passée en paramètre à la méthode.
Livre Android.book Page 87 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 102/391

Suivant