2012-04-02 4 views
0

Ich schreibe einen einfachen XMPP-Client in Android, ich habe alle XMPP-Aufrufe zu einem netten Hilfsmodul extrahiert. Dieses Modul schreibt alle eingehenden XMPP-Nachrichten in eine SQLite-Datenbank.Ansichten auf einem SQLiteChange aktualisieren

Wenn die App eine Ansicht eines Benutzers öffnet, ergreift sie eine Kopie der neuesten Nachrichten aus der SQLite-Datenbank (einfach genug).

Wenn jedoch eine XMPP-Nachricht eintreffen sollte, während der Benutzer sieht, dass "ListView" dort ist, blubbern Sie eine Nachricht in einer Baumstruktur, um eine Ansicht zu aktualisieren?

Der XMPP-Client wird im Anwendungskontext ausgeführt, wenn das überhaupt hilft.

Antwort

1

Verwenden Sie ContentProvider und ContentObserver, es ist eine gute Umsetzung des Beobachtermusters, die genau das ist, was Sie brauchen. Der Adapter bietet den Inhalt an das Listview-Griffe auch praktisch alle von der Beobachtungsseite, die Sie gerade Ihre eigene Content

+0

Kann ich den Inhalt implementieren müssen Provider/Observer ist privat, dh nur innerhalb dieser App verfügbar? –

+0

Ja standardmäßig ist der ContentProvider privat – smith324

0

Verwenden listview.notifyDataSetChanged() und die Listenansicht wird behandeln den Rest :)

+0

Entschuldigung, ich habe nicht klar erklärt, das Problem ist nicht das eine Element zu aktualisieren, es zu versuchen und zu finden, was Listview derzeit von einer anderen Klasse sichtbar ist, um es zu informieren, dass die Daten Satz hat sich geändert. –