Wie aktualisiert man ListView beim Scrollen beim Abrufen von Daten vom Server in Android?

8

Zur Zeit verwende ich AsyncTask, um die HTTP-Verbindung zu verarbeiten und Daten als JSON-Format abzurufen.
   Das Laden aller Daten ist trivial, aber es verbraucht zu viel Zeit, also entschied ich mich, zu wechseln, um 10 Elemente gleichzeitig mit LIMIT OFFSET (mysql) zu laden.
Als nächstes habe ich das Ereignis onScroll für meine Listenansicht eingerichtet, um jedes Mal, wenn der Benutzer scrollt, ein neues AsyncTask zu erstellen. Nach dem, was ich gelesen habe, ist AsyncTask jedoch in einem Thread-Pool gespeichert, der auf 5 Threads beschränkt ist, also bin ich mir nicht sicher, ob das ein richtiger Ansatz ist. Ich bin ein Neuling für die Client / Server-App. Könnte mir jemand dazu einen Rat geben? Jeder verwandte Artikel, Dokumentation wäre sehr willkommen.

    
Cathy 19.01.2012, 04:50
quelle

3 Antworten

12

Hier sind ein paar nützliche Links dafür,

Android: Implementieren der Fortschrittsleiste und "Laden ..." für Endless List wie Android Market

Endlose Listview mit der aktuellen Async-Aufgabe

Android Endlos-Liste

Ссылка

Ссылка

In einfachen Schritten

  

Wenn der Benutzer scrollt - erkennt das Ende der Liste
1) Zeigt einen Fortschritt an   Benachrichtigung
2) Nach Update fragen 3) Update (asynchron) empfangen und   Liste erweitern

    
Andro Selva 19.01.2012, 04:57
quelle
2

Ein typischer Ansatz wäre z.B. um zunächst 25 zu laden und dann eine Fußzeile in der Liste zu haben, die z.B. die aktuelle Zählung und die Gesamtzählung und beim Drücken lädt eine weitere 25 und so weiter. Das wäre eine seitenweise Ladefunktion.

Wenn Sie dies tun, müssen Sie die aktuelle Position beibehalten und den Adapter benachrichtigen, dass sich die Liste geändert hat.

    
Manfred Moser 19.01.2012 04:59
quelle
2

Wenn Sie ListView verwenden, kann ich sicher davon ausgehen, dass Sie eine Art ListAdapter verwenden müssen. Anstatt ein neues AsyncTask im Ereignis onScroll zu starten, sollten Sie nur ein einziges AsyncTask beibehalten, um Daten vom Server abzurufen, diese Daten zum ListAdapter -Datensatz hinzufügen und dann notifyDatasetChanged für% co_de aufrufen %.

Die ListAdapter und ListAdapter kümmern sich um den Rest.

    
Arnab Chakraborty 19.01.2012 04:59
quelle