2012-01-19 12 views
8

Attualmente sto usando AsyncTask per gestire la connessione Http e recuperare i dati in formato JSON.
Il caricamento di tutti i dati è banale ma consuma troppo tempo, quindi ho deciso di passare a caricare 10 elementi alla volta utilizzando LIMIT OFFSET (mysql).
Successivamente ho impostato l'evento onScroll per la visualizzazione elenco per creare un nuovo AsyncTask ogni volta che l'utente scorre. Tuttavia, da quello che ho letto, AsyncTask è memorizzato in un pool di thread che è limitato 5 thread alla volta, quindi non sono sicuro che questo sia un approccio corretto. Sono novizio per l'app client/server, quindi potrei darmi un consiglio su questo problema? Qualsiasi articolo correlato, la documentazione sarebbe molto apprezzata.Come aggiornare ListView sullo scorrimento durante il recupero dei dati dal server in Android?

risposta

12

Ecco alcuni link utili per esso,

Android: Implementing progressbar and "loading..." for Endless List like Android Market

Endless Listview with current Async Task

Android Endless List

http://www.androidguys.com/2009/10/21/tutorial-autogrowing-listview/

http://mylifewithandroid.blogspot.com/2010/03/progressively-loading-listviews.html

in semplici passi,

Come utente scorre - rilevare la fine della lista
1) Visualizzare un progresso notifica
2) Richiesta aggiornamento
3) Ricevere aggiornamento (in modo asincrono) e estendere la lista

+0

Elenco meraviglioso! Molte grazie. – Cathy

+0

sempre il benvenuto amico mio !! –

2

Se si utilizza un ListView, credo di poter presumere che si stia utilizzando una specie di ListAdapter. Invece di avviare un nuovo AsyncTask nell'evento onScroll, è necessario mantenere un solo AsyncTask per recuperare i dati dal server, aggiungere tali dati al set di dati ListAdapter e quindi chiamare notifyDatasetChanged su ListAdapter.

Il ListAdapter e il ListView si prenderanno cura di tutto il resto.

2

Un approccio tipico potrebbe essere ad es. caricare 25 inizialmente e quindi avere un piè di pagina nell'elenco che visualizza ad es. il conteggio corrente e il conteggio totale e alla pressione carica altri 25 e così via. Quello sarebbe un tipo di caricamento impaginato.

Quando si esegue questa operazione è necessario mantenere la posizione corrente e informare l'adattatore che l'elenco è stato modificato.

Problemi correlati