-
A propos des setListView
J’espère que vous allez bien, :ccool:
Je suis nouveau sur ce forum et c'est ma première participation,
Je suis nouveau aussi au monde Android, j'espère trouver ici le support et la soutenance afin que je puisse faire de même pour les nouveaux un jour ...:mouarf:
Voici ma première question:
En ce qui concerne les ListView, j'ai vu quelques exemples d'utilisation, et j'aimerai bien comprendre pourquoi parfois on passe en paramètre de la setListView un ArrayAdapter déjà défini par java, alors que dans d'autre cas on passe en paramètre un certain MyArrayAdapter qu'on doit créer nous même et qui 'extends' l'ArrayAdapter.
-
Sans doute voulez vous parler de la fonction setAdapter ?
La ListView (ou plus génériquement toute AdapterView, comme un Spinner, ou une GridView) s'occupe de la gestion graphique globale (recyclage des vues, gestion du scrolling, des clicks/long-clicks, etc...).
Pour se faire, elle a besoin de spécifications (nombre d'éléments, éléments en question, comment les afficher, ...). Ceci est fait par un "Adapter".
L'Adapter s'occupe donc de deux choses: fournir un accès aux données lles-mêmes (getItem), fournir les "View" à insérer pour représenter ces données.
Afin d'aider le programmeur, il existe toute une hiérarchie d'Adapter:
BaseAdapter (la base de la base, tous les adapters devraient en hériter)
-- ArrayAdapter (les données sont fournies directement par une liste ou un tableau)
-- SimpleAdapter (les données sont fournies sous forme de list de hashmap :aie:, et traduites vers des "id" de view d'un layout passé en paramètre)
-- CursorAdapter (les données viennent d'un Cursor sur une base de données)
---- CursorSimpleAdapter (un cursor adapter qui map des colonnes vers des ID de view d'un layout passé en paramètre).
...
Mais quand on veux commencer à faire des choses bizarres (par exemple modifier le layout en fonction de la donnée, ne serait-ce que pour cacher/montrer quelque chose), il ne reste que les classes "de base": ArrayAdapter, CursorAdapter (et BaseAdapter).
Et si on veut avoir des données un peu spéciales (par exemple en mode "continu" venant d'un webservice) plus le choix, il ne reste plus que BaseAdapter.
D'ou l'utilisation de classes "personnelles" pour faire le boulot.
-
Merci pour votre réponse et votre effort, cela m'a permet de comprendre énormément de choses.
Ce que je veux faire, c'est d'afficher une List<Produit>, où chaque produit est composé d'un TextView et une ImageView, si j'ai bien compris ce vous venez de dire, je peux utiliser un ArrayAdapter pour réaliser cette opération.
-
Si tu souhaites avoir un adapter personnalisé avec une liste d'objet complexe, j'ai réalisé un petit tuto si tu veux t'en inspirer :
Le tuto est ici !
:ccool:
-
Merci très bien NameX, j'ai jeté un coup d’œil là-bas j'ai même laissé un commentaire ;), les choses deviennent de plus en plus clair. J'ai encore beaucoup des questions j'aimerai bien voir tes réponses dans mes prochaines discussion.
-
Salut,
De rien si ça peut aider. :ccool:
Ou ça ? sur le tuto ? parce que je ne le vois pas !
Pas de problème si tu as des questions hésite pas ici ou sur le tuto ! :)