Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
66 L’art du développement Android
S’adapter aux circonstances
Dans l’absolu, les adaptateurs offrent une interface commune pour différentes API. Plus
précisément, dans le cas d’Android, ils fournissent une interface commune au modèle de
données sous-jacent d’un widget de sélection comme une liste déroulante. Cette utilisation
des interfaces Java est assez classique (voir, par exemple, les adaptateurs de modèles pour
JTable en Java/Swing), et Java n’est pas le seul environnement à fournir ce type
d’abstraction (le framework XML de Flex accepte indifféremment du code XML en ligne
ou téléchargé à partir d’Internet).
Les adaptateurs d’Android se chargent de fournir la liste des données d’un widget de
sélection et de convertir les différents éléments en vues spécifiques pour qu’elles s’affichent dans ce widget de sélection. Ce dernier aspect des adaptateurs peut sembler un peu
curieux mais, en réalité, il n’est pas si différent de ce que proposent les autres kits de développement graphiques pour redéfinir l’affichage par défaut. En Java/Swing, par exemple,
si vous souhaitez qu’une liste implémentée par une JList soit, en réalité, une liste à
cocher (où les différentes lignes sont composées d’une case à cocher et d’un label et où les
clics modifient l’état de cette liste), vous finirez inévitablement par appeler la méthode
setCellRenderer() pour disposer d’un objet ListCellRenderer qui, à son tour, permet
de convertir le contenu d’une liste en widgets composites JCheckBox-plus-JLabel.
Utilisation d’ArrayAdapter
L’adaptateur le plus simple est ArrayAdapter puisqu’il suffit d’envelopper un tableau ou
une instance de java.util.List pour disposer d’un adaptateur prêt à fonctionner :
String[] items = {"ceci", "est", "une",
"liste", "vraiment", "stupide"};
new ArrayAdapter(this,
android.R.layout.simple_list_item_1, items);
Le constructeur d’ArrayAdapter attend trois paramètres :
● le contexte d’utilisation (généralement, il s’agit de l’instance de l’activité) ;
● l’identifiant de ressource de la vue à utiliser ;
● le tableau ou la liste d’éléments à afficher.
Par défaut, ArrayAdapter appellera la méthode toString() des objets de la liste et enveloppera chaque chaîne ainsi obtenue dans la vue désignée par la ressource indiquée.
android.R.layout.simple_list_item_1 se contente de transformer ces chaînes en
objets TextView qui, à leur tour, s’afficheront dans la liste, le spinner ou tout widget qui
utilise cet ArrayAdapter. Vous pouvez confectionner vos propres vues en créant une sousclasse d’ArrayAdapter pour redéfinir sa méthodegetView() :
Livre Android.book Page 66 Dimanche, 8. novembre 2009 12:23 12
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
66 L’art du développement Android
S’adapter aux circonstances
Dans l’absolu, les adaptateurs offrent une interface commune pour différentes API. Plus
précisément, dans le cas d’Android, ils fournissent une interface commune au modèle de
données sous-jacent d’un widget de sélection comme une liste déroulante. Cette utilisation
des interfaces Java est assez classique (voir, par exemple, les adaptateurs de modèles pour
JTable en Java/Swing), et Java n’est pas le seul environnement à fournir ce type
d’abstraction (le framework XML de Flex accepte indifféremment du code XML en ligne
ou téléchargé à partir d’Internet).
Les adaptateurs d’Android se chargent de fournir la liste des données d’un widget de
sélection et de convertir les différents éléments en vues spécifiques pour qu’elles s’affichent dans ce widget de sélection. Ce dernier aspect des adaptateurs peut sembler un peu
curieux mais, en réalité, il n’est pas si différent de ce que proposent les autres kits de développement graphiques pour redéfinir l’affichage par défaut. En Java/Swing, par exemple,
si vous souhaitez qu’une liste implémentée par une JList soit, en réalité, une liste à
cocher (où les différentes lignes sont composées d’une case à cocher et d’un label et où les
clics modifient l’état de cette liste), vous finirez inévitablement par appeler la méthode
setCellRenderer() pour disposer d’un objet ListCellRenderer qui, à son tour, permet
de convertir le contenu d’une liste en widgets composites JCheckBox-plus-JLabel.
Utilisation d’ArrayAdapter
L’adaptateur le plus simple est ArrayAdapter puisqu’il suffit d’envelopper un tableau ou
une instance de java.util.List pour disposer d’un adaptateur prêt à fonctionner :
String[] items = {"ceci", "est", "une",
"liste", "vraiment", "stupide"};
new ArrayAdapter
android.R.layout.simple_list_item_1, items);
Le constructeur d’ArrayAdapter attend trois paramètres :
● le contexte d’utilisation (généralement, il s’agit de l’instance de l’activité) ;
● l’identifiant de ressource de la vue à utiliser ;
● le tableau ou la liste d’éléments à afficher.
Par défaut, ArrayAdapter appellera la méthode toString() des objets de la liste et enveloppera chaque chaîne ainsi obtenue dans la vue désignée par la ressource indiquée.
android.R.layout.simple_list_item_1 se contente de transformer ces chaînes en
objets TextView qui, à leur tour, s’afficheront dans la liste, le spinner ou tout widget qui
utilise cet ArrayAdapter. Vous pouvez confectionner vos propres vues en créant une sousclasse d’ArrayAdapter pour redéfinir sa méthodegetView() :
Livre Android.book Page 66 Dimanche, 8. novembre 2009 12:23 12
