Aktualisierung von Android ListView Live

8

Ich habe eine ListView in einer ListActivity, die an einige Daten gebunden ist. Ich habe einen Inhaltsanbieter, der die Daten bereitstellt.

Die ListActivity ruft die Daten ab, indem sie einen Content-Resolver abfragt:

%Vor%

Jetzt hat die Aktivität also den Cursor. Es erstellt einen Adapter und hängt ihn an die Liste an:

%Vor%

Das funktioniert gut; Die Liste zeigt die Daten im Cursor.

Aber jetzt hat der Inhaltsanbieter neue Daten. Ich möchte, dass die Liste aktualisiert wird, um die neuen Daten anzuzeigen.

Die Beispiele, die ich gesehen habe, beinhalten einen Aufruf an den Adapter notifyDataSetChanged, aber es scheint mir, dass dies die Trennung zwischen dem Inhaltsanbieter und der Liste, die den Inhalt verbraucht, durchbricht.

Muss der Inhaltsanbieter wissen, welche Adapter an den Cursor angehängt sind, damit er die notifyDataSetChanged-Methode aufrufen kann? Oder gibt es einen besseren Weg, der diese beiden Dinge nicht auf diese Weise gekoppelt sieht?

    
stevex 09.03.2012, 14:20
quelle

3 Antworten

6

Ich habe die Antwort hier gefunden:

Ссылка

Kurz gesagt, der Provider ruft notifyChange auf, um anzuzeigen, dass sich der Inhalt des URI geändert hat:

%Vor%

Und die ListActivity ruft setNotificationUri auf dem Cursor auf, um zu registrieren, dass sie an einer Benachrichtigung über Änderungen interessiert ist:

%Vor%

(Danke, dass njzk2 mich in die richtige Richtung weist).

    
stevex 09.03.2012, 15:35
quelle
1

Unter der Annahme, dass ContentProvider zu Ihnen gehört, sollten Sie cursor.setNotificationUri(getContext().getContentResolver(), uri); in Ihrer query Implementierung von CP hinzufügen (bevor Sie den Cursor zurückgeben) und getContext().getContentResolver().notifyChange(uri, null); in update , insert , delete ... SimpleCursorAdapter was prolly base von DocumentListCursorAdapter ist, sollte beim Aktualisieren von listview aufpassen.

    
Selvin 09.03.2012 15:36
quelle
0

Sie meinen, Sie möchten die Liste entsprechend der geänderten Daten aktualisieren.
Probieren Sie das einfach aus:
Wenn Sie einen neuen Cursor bekommen, dann setzen Sie einfach diesen Code und setzen Sie den neuen Adapter auf die Liste.

%Vor%

und

%Vor%     
AndroidHelp 09.03.2012 14:27
quelle

Tags und Links