Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
Chapitre 9
S’amuser avec les listes 103
rate.setOnRatingBarChangeListener(l);
layout.addView(rate);
layout.addView(guts);
wrap=new ViewWrapper(layout);
wrap.setGuts(guts);
layout.setTag(wrap);
rate.setTag(new Integer(position));
rate.setRating(rates[position]);
row=layout;
}
else {
wrap=(ViewWrapper)convertView.getTag();
wrap.setGuts(delegate.getView(position, wrap.getGuts(),
parent));
wrap.getRatingBar().setTag(new Integer(position));
wrap.getRatingBar().setRating(rates[position]);
}
return(row);
}
}
L’essentiel du traitement de notre liste d’évaluation réside dans RateableWrapper. Cette
classe place les barres d’évaluation sur les lignes et mémorise leurs états lorsqu’elles sont
modifiées par l’utilisateur. Pour stocker ces états, on utilise un tableau de float dont la
taille correspond au nombre de lignes que delegate rapporte pour cette liste.
L’implémentation de la méthode getView() de RateableWrapper rappelle celle de RateListDemo, sauf qu’au lieu d’utiliser LayoutInflater on doit construire manuellement un
conteneur LinearLayout pour y placer notre RatingBar et les "tripes" (c’est-à-dire toutes
les vues créées par delegate et que l’on décore avec une barre d’évaluation). LayoutInflater est conçue pour construire une View à partir de widgets bruts or, ici, nous ne
savons pas par avance à quoi ressembleront les lignes, hormis le fait qu’il faudra leur
ajouter une barre d’évaluation. Le reste du code est semblable à celui de RateListDemo :
class ViewWrapper {
ViewGroup base;
View guts=null;
RatingBar rate=null;
ViewWrapper(ViewGroup base) {
this.base=base;
}
Livre Android.book Page 103 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 118/391

Suivant