2009-10-08 6 views
14

Je voulais savoir comment rafraîchir un ListActivity quand je change/ajoute des données. J'ai d'abord pensé que ListAdapter sait quand la liste est modifiée, mais quand j'ai ajouté des éléments à la liste il n'y a pas de mise à jour sur le ListActivity, seulement quand je ferme le ListActivity et le rouvre je vois que les changements se produisent.Mettre à jour Android ListActivity lorsque les données de la liste changent?

Donc j'ai cherché n'importe quelle méthode telle que: update(), refesh() ou quelque chose comme ça, mais il n'y en a pas. Il semble que je n'ai pas eu le concept, quelqu'un peut-il m'aider s'il vous plaît?

Répondre

22

Si vous utilisez un ArrayAdapter, manipulez le contenu de la liste via l'adaptateur - ne touchez pas à la liste sous-jacente. Il existe add(), insert() et remove() sur ArrayAdapter. Si vous utilisez un CursorAdapter, exécutez un requery() sur le Cursor.

+0

pas ok merci je comprends comment cela fonctionne –

+0

j'utilise ArrayAdapter et mettre à jour enregistrement. Comment puis-je actualiser ListView? –

+3

Ceci, bien sûr, n'est plus recommandé, car 'query()' est exécuté sur le thread de l'interface utilisateur. Si vous tombez sur cette publication, vous devriez envisager d'utiliser 'Loader' à la place. –

7

Essayez ArrayAdapter: notifyDataSetChanged
Google docs link

+2

Juste une note, cela ne fonctionne pas s'il n'y a pas d'observateurs à attacher à l'adaptateur. – Waltsu

0

Peut-être que vous devriez le faire setListAdapter(listAdapter);

Questions connexes