Android: Aktualizace Listview po Thread zatížení dat z internetu

hlasů
15
  1. Líbí se mi, že moje GUI se objeví okamžitě, když uživatel spustí aplikaci.
  2. Pak některá data (text, obrázky) se nahraje do pozadí (jako je aplikace YouTube).
  3. ListView a galerie dostane s těmito novými daty automaticky aktualizovány.

I zahájit svou ListView, kdo vlákno a načíst data ... a pak nedostane aktualizováno ListView! Několik lidí mi řekl, že bych měl použít notifyDataSetChanged(). Ale nemohu umístit tento příkaz do mé vlákno (jen neznámé).

Nějaké nápady?

Položena 16/03/2009 v 20:03
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
19

Mám stejný problém ... a jsem nadšený, když jsem narazil na tuto otázku. Ale žádná odpověď? :-(

Poté, nechal problém sedět po dobu asi dvou týdnů jsem našel řešení zde :

Dlouhý příběh krátce:

Citace shora odkazu:

My, protože jsme nelze aktualizovat většinu uživatelského rozhraní objektů, je nutné použít objekt Handler, zatímco v samostatném vlákně. Když jsme se poslat zprávu popisovač to dostane uloženy do fronty a vykonán podle UI nití co nejdříve.

Jakmile byste se podívat na kód vidíte dostat to, co autor říká.
Poznámka: I s psovodem, Android nemusí nechat aktualizovat objekt zobrazení z běhu podprocesu () metoda. Dostal jsem tuto chybu:

05-31 02:12:17.064: ERROR/AndroidRuntime(881):
android.view.ViewRoot$CalledFromWrongThreadException: 
Only the original thread that created a view hierarchy can touch its views.

Chcete-li získat kolem něj jsem aktualizoval celou řadu údajů ve své metodě run () a používá, že pole aktualizovat zobrazení v metodě psovoda handleMessage ().

Doufám, že to pomáhá ostatním venku.

Odpovězeno 31/05/2009 v 04:38
zdroj uživatelem

hlasů
4

Můžete použít slowAdapter aktualizovat zobrazení:

SlowAdapter = new SlowAdapter(this);

list.setAdapter(SlowAdapter);
SlowAdapter.notifyDataSetChanged();
Odpovězeno 30/04/2010 v 14:17
zdroj uživatelem

hlasů
3

Našel to sám při čtení tohoto vlákna a snaží se kolem sebe.

Zkrátka: AsyncTask ‚s metoda onProgressUpdate může dotknout názor : http://developer.android.com/reference/android/os/AsyncTask.html#onProgressUpdate (Progress ...)

Souvislosti: potřebovala jsem zavolat ZnovuSpustitDotaz na mém kurzoru takže ListView průběžně aktualizován, zatímco úkol plní databázi. ZnovuSpustitDotaz volání v doInBackground nezdařilo s uvedenou CalledFromWrongThreadException ale stejný kód v onProgressUpdate děl.

Odpovězeno 15/06/2010 v 06:51
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more