Est-il normal de changer un ListView l'adaptateur de façon dynamique?
Au lieu de créer de multiples activités, je voudrais changer la ArrayAdapter
de la ListView
en tant que de besoin. Je ne vois aucune mention dans le API quant à savoir si ou non il est possible d'appeler setAdapter()
plus d'une fois.
Pour être plus précis, disons que je voudrais démarrer une activité qui a une ListView
. Dans cet exemple, le ListView
est initialisé avec un listView.setAdapter(this)
à partir de, disons, un CategoryArrayAdapter
.
L'utilisateur sélectionne une catégorie. Sans se lancer dans une nouvelle activité, le code sera une nouvelle carte pour le même ListView
. La nouvelle carte, dire ItemArrayAdapter
appels listView.setAdapter(this)
.
N'quelqu'un a l'expérience d'avoir fait cela avec succès ou connaissez une bonne raison pourquoi elle ne devrait pas être fait?
Vous devez vous connecter pour publier un commentaire.
La réponse simple est OUI, et j'ai fait similaire genre de choses avant.
C'est exactement la raison pour laquelle Adaptateur est existé et fournie par l'API. Le contenu réel (Modèle) et la manière dont elle est rendue (Vue) pour chaque éléments de la liste est isolé et mis en œuvre à l'intérieur de android.widget de.Carte, au lieu de directement lié à android.widget de.AdapterView. Tant que votre carte est correctement mis en œuvre, vous pouvez permuter/modifier le sous-jacent carte liés à la ListView, simplement en appelant la setAdapter() la méthode.
La réinitialisation de la carte est ok, mais c'est un avis, qu'il pourrait y avoir une interface graphique glitch en faisant de la sorte, comme le point de vue dont la carte est en cours de modification doit être redessiné avec les nouvelles données. À côté de cela, vous devriez être bien.