Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
92 L’art du développement Android
return(label);
}
ImageView getIcon() {
if (icon==null) {
icon=(ImageView)base.findViewById(R.id.icon);
}
return(icon);
}
}
ViewWrapper ne détient pas seulement les widgets fils : elle les recherche uniquement si
elle ne les détient pas déjà. Si vous créez un wrapper et que vous n’ayez jamais besoin
d’un fils précis, il n’y aura donc jamais aucun appel de findViewById() pour le retrouver
et vous n’aurez jamais à payer le prix de ces cycles CPU inutiles.
Le patron "support" permet également d’effectuer les traitements suivants :
● Il regroupe au même endroit le transtypage de tous nos widgets, au lieu de le disséminer
dans chaque appel à findViewById().
● Il permet de mémoriser d’autres informations sur les lignes, comme leur état, que nous
ne voulons pas insérer dans le modèle sous-jacent.
L’utilisation de ViewWrapper consiste simplement à créer une instance de cette classe à
chaque fois que l’on crée une ligne par inflation et à attacher cette instance à la vue de la
ligne via setTag(), comme dans cette version de getView() :
public class ViewWrapperDemo extends ListActivity {
TextView selection;
String[] items={"lorem", "ipsum", "dolor", "sit", "amet",
"consectetuer", "adipiscing", "elit", "morbi", "vel",
"ligula", "vitae", "arcu", "aliquet", "mollis",
"etiam", "vel", "erat", "placerat", "ante",
"porttitor", "sodales", "pellentesque", "augue",
"purus"};
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
setListAdapter(new IconicAdapter(this));
selection=(TextView)findViewById(R.id.selection);
}
private String getModel(int position) {
return(((IconicAdapter)getListAdapter()).getItem(position));
}
Livre Android.book Page 92 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 107/391

Suivant