Comment mettre à jour SimpleAdapter dans Android
Est-il possible de mettre à jour un SimpleAdapter? J'ai une liste de données et un pied de page qui dit "Voir les Résultats" Lorsque cet élément de liste est cliqué, j'ai fait une capture de l'événement et d'obtenir de nouvelles données. Je veux remplacer les données dans la ListView avec ces nouvelles données, mais je ne peux pas comprendre comment le faire. Des Idées? Je ne veux pas utiliser un ArrayAdapter, cause aussi loin que je peux voir les articles ne peut contenir qu'une chaîne où j'en ai besoin d'avoir plusieurs cordes et ints.
OriginalL'auteur Chris L. | 2010-07-22
Vous devez vous connecter pour publier un commentaire.
Mise à jour: Selon del116, vous pouvez en effet donner
SimpleAdapter
une mutable carte manuellement, puis appeler la cartenotifyDataSetChanged
méthode lorsque vous avez besoin de la liste de mise à jour. Cependant, de mon point de vue ci-dessous se dresse sur la documentation de SimpleAdapter précisant que c'est pour les données statiques; l'utiliser pour mutable données va à l'encontre de son design, donc si vous utilisez cette technique, je voudrais être sûr de vérifier sur si elle continue à travailler dans les nouvelles versions d'Android à mesure de leur apparition.(Commentaire initial suit:)
Si vous regardez la SimpleAdapter description il dit qu'il est "Un simple adaptateur de carte données statiques de vues définies dans un fichier XML." J'ai ajouté l'accent -- mettez simplement,
SimpleAdapater
n'est pas construit pour une utilisation avec des données qui changent; il gère des données statiques uniquement. Si vous ne pouvez pas utiliser un ArrayAdapter parce que vos données a plus qu'un seul bit de texte, puis vous devrez construire votre propre personnalisé ListAdapter, ou de mettre vos données dans une base de données et l'utilisation de l'un des CursorAdapters.Comme un dernier recours, si vous n'avez pas besoin de beaucoup de performance, vous pourrait mise à jour d'un
ListView
soutenu par uneSimpleAdapter
par la construction d'une toute nouvelleSimpleAdapter
exemple tout moment vos données changent et dire à l'affichage de la liste de l'utiliser viasetListAdapter
.Juste assez. J'ai évoqué cette possibilité dans la fin de ma réponse, mais je l'ai mis vers le haut en fonction de vos commentaires qu'il n'en fait; je n'avais pas testé. Je maintiens qu'il ferait une telle chose mérite d'une certaine prudence, puisque le SimpleAdapter la documentation précise que c'est pour les données statiques.
En regardant en arrière à ce moment...wow. Je ne savais rien sur la programmation ou de la destination des SimpleAdapter. Si vous utilisez un ListView (ou tout AdapterView) soutenu par une structure de données qui va changer n'utilisez pas SimpleAdapter. Pied.inMouth(true);
OriginalL'auteur Walter Mundt
Appeler cette fonction à chaque fois de mettre à jour la liste. Gardez à l'Esprit que Vous devez mettre à jour le liste variable avec de nouvelles Données..
Espère que cela Aide..:)
OriginalL'auteur Augustus Francis
SimpleAdapter
est destinée pour les données statiques, de sorte que la performance peut varier. La meilleure solution est probablement de passer à un autre type d'adaptateur, commeArrayAdapter
, ou de faire une nouvelleSimpleAdapter
chaque fois que vous modifiez le jeu de données.OriginalL'auteur Hishighness731
Je n'étais pas en mesure d'obtenir notifyDataSetChanged() pour travailler sur la mise à jour de mon SimpleAdapter, donc j'ai essayé de supprimer tous les points de vue qui ont été attachés à la mère de mise en page à l'aide de removeAllViews(), puis ajout de la liste, et qui a fonctionné, ce qui me permet de mettre à jour l'INTERFACE utilisateur:
OriginalL'auteur Chasden
Utiliser cette ligne après la mise à jour des données dans le HashMap liste
OriginalL'auteur Ibrahim