Ich habe einen einfachen contentProvider, ein Layout mit einer ListView und eine Schaltfläche zum Hinzufügen von Elementen im Content Provider und einem CursorLoader. Die Ссылка , D) Referenz besagt, dass
Der Loader überwacht die Änderungen an den Daten und meldet sie an Sie durch neue Anrufe hier. Sie sollten die Daten nicht selbst überwachen. Zum Beispiel, wenn die Daten ein Cursor ist und Sie es in einem platzieren CursorAdapter, benutze den CursorAdapter (android.content.Context, android.database.Cursor, int) -Konstruktor, ohne dass einer übergeben wird FLAG_AUTO_REQUERY oder FLAG_REGISTER_CONTENT_OBSERVER (verwenden Sie 0 für das Flags-Argument). Dies verhindert den CursorAdapter seine eigene Beobachtung des Cursors, die seit wann nicht benötigt wird Änderung passiert, Sie erhalten einen neuen Cursor werfen einen weiteren Anruf hier.
Die Zeile "Log.info" in der Methode "onLoadFinished" wurde jedoch nicht ausgeführt, und listView wurde nicht aktualisiert. Hier ist mein (einfacher) Code:
%Vor%Irgendwelche Vorschläge?
AFAIK, Sie müssen die Benachrichtigung selbst in ContentProvider
implementieren. Fügen Sie dazu getContext().getContentResolver().notifyChange(uri, null);
, insert
und update
methode von delete
hinzu und rufen Sie ContentProvider
auf Ihrem .setNotificationUri(getContext().getContentResolver(), uri)
in Cursor
auf, wie in offizielle Dokumentation . Hier finden Sie das ganze Bild
Hinweis: Sie sollten den Cursor nicht schließen ( query
), um zu erhalten
Benachrichtigungen über die Änderungen.
Tags und Links android simplecursoradapter cursor