Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
88 L’art du développement Android
● On regarde si ce mot fait plus de quatre caractères, auquel cas on recherche le widget
ImageView de l’icône et on remplace sa ressource de base par une autre.
On dispose désormais d’une liste ListView contenant des icônes différentes, variant selon
les entrées correspondantes de la liste (voir Figure 9.2).
Il s’agit bien sûr d’un exemple assez artificiel, mais cette technique peut servir à personnaliser les lignes en fonction de n’importe quel critère – le contenu des colonnes d’un
Cursor, par exemple.
Mieux, plus robuste et plus rapide
L’implémentation de getView() que nous venons de présenter fonctionne, mais elle est
peu efficace. En effet, à chaque fois que l’utilisateur fait défiler l’écran, on doit créer tout
un lot de nouveaux objets View pour les nouvelles lignes qui s’affichent. Le framework
d’Android ne mettant pas automatiquement en cache les objets View existants, il faut en
recréer de nouveaux, même pour des lignes que l’on avait créées très peu de temps auparavant. Ce n’est donc pas très efficace, ni du point de vue de l’utilisateur, qui risque de
constater que la liste est lente, ni du point de vue de la batterie – chaque action du CPU
consomme de l’énergie. Ce traitement supplémentaire est, par ailleurs, aggravé par la
charge que l’on impose au ramasse-miettes (garbage collector) puisque celui-ci doit
détruire tous les objets que l’on crée. Par conséquent, moins le code est efficace, plus la
batterie du téléphone se décharge vite et moins l’utilisateur est content. On doit donc
passer par quelques astuces pour éviter ces défauts.
Figure 9.2
L’application
DynamicDemo.
Livre Android.book Page 88 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 103/391

Suivant