Je veux actualiser un Android ListView
après avoir ajouté / supprimé des données dynamiques.
Quelqu'un peut-il me dire comment y parvenir?
Je veux actualiser un Android ListView
après avoir ajouté / supprimé des données dynamiques.
Quelqu'un peut-il me dire comment y parvenir?
Appelez notifyDataSetChanged()
sur votre Adapter
.
Certains détails supplémentaires sur comment / quand appeler notifyDataSetChanged () peuvent être consultés dans cette vidéo d'E / S Google .
La bonne chose à faire (et heureusement aussi marqué comme réponse) est d'appeler notifyDataSetChanged() sur votre Carte.
Si l'appel de notifyDataSetChanged() ne marche pas à tous les méthodes de présentation ne va pas aider non plus. Croyez-moi, la liste a été correctement mis à jour. Si vous ne parvenez pas à trouver la différence, vous devez vérifier où les données de votre carte.
Si ce n'est qu'une collection vous êtes à la conserver dans la mémoire de vérifier que vous avez bien supprimé l'élément de la collection avant d'appeler la notifyDataSetChanged().
Si vous travaillez avec une base de données ou un service backend, vous aurez pour appeler la méthode pour récupérer les informations de nouveau (ou de manipuler la mémoire de données) avant d'appeler la notifyDataSetChanged().
Le truc, c'est ce notifyDataSetChanged ne fonctionne que si le jeu de données a changé. Donc, c'est l'endroit à regarder si vous ne trouvez pas de changements à venir à travers. Débogage en cas de besoin.
Il est vrai que ce doit être appelée à partir de la thread de l'INTERFACE utilisateur. D'autres réponses d'avoir des exemples sur la façon d'atteindre cet objectif. Cependant ce n'est nécessaire que si vous travaillez sur cette information provenant de l'extérieur de la thread de l'INTERFACE utilisateur. C'est à partir d'un service ou d'un thread d'INTERFACE utilisateur. Dans les cas simples, vous serez mise à jour de vos données à partir d'un clic sur un bouton ou une autre activité/fragment. Donc, toujours dans le thread de l'INTERFACE utilisateur. Pas besoin de toujours pop que runOnUiTrhead.
Encore un joli post sur la puissance de listViews se trouve ici: http://www.vogella.com/articles/AndroidListView/article.html
Appelez runnable quand vous voulez:
runOnUiThread(run);
OnCreate (), vous définissez votre thread exécutable:
run = new Runnable(){
public void run(){
//reload content
arraylist.clear();
arraylist.addAll(db.readAll());
adapter.notifyDataSetChanged();
listview.invalidateViews();
listview.refreshDrawableState();
}
};
Si vous utilisez SimpleCursorAdapter, essayez d'appeler requery () sur l'objet Cursor.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.