2009-10-08 13 views
14

Podczas zmiany/dodawania danych chciałem się dowiedzieć, jak odświeżyć ListActivity.Zaktualizować Android ListActivity, gdy zmienia się lista danych?

Po raz pierwszy pomyślałem, że ListAdapter będzie wiedzieć, kiedy lista się zmienia, ale kiedy dodałem elementy do listy, nie ma aktualizacji na ListActivity, tylko wtedy, gdy zamykam ListActivity i ponownie go ponownie widzę zmiany występują.

Szukałem więc dowolnej metody, takiej jak: update(), refesh() lub coś podobnego, ale nie ma. Wygląda na to, że nie mam pojęcia, czy ktoś może mi pomóc?

Odpowiedz

22

Jeśli korzystasz z ArrayAdapter, zmień zawartość listy za pomocą adaptera - nie dotykaj tej listy. Istnieją metody add(), insert() i na ArrayAdapter.

Jeśli używasz CursorAdapter, uruchom requery() na Cursor.

+0

ok dzięki nie mogę zrozumieć, jak to działa –

+0

używam ArrayAdapter i rekord zaktualizować. Jak mogę odświeżyć ListView? –

+3

To oczywiście nie jest już zalecane, ponieważ 'requery()' jest wykonywane w wątku UI. Jeśli natkniesz się na ten post, powinieneś rozważyć użycie 'Loader'. –

7

Spróbuj ArrayAdapter: notifyDataSetChanged
Google docs link

+2

Tylko uwaga, która nie działa, jeśli nie ma żadnych obserwatorów dołączonych do adaptera. – Waltsu

0

Może powinieneś zrobić to setListAdapter(listAdapter);

Powiązane problemy