Warum hat cursorLoader Änderungen in den Quelldaten nicht gemeldet?

7

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?

    
ilcaduceo 29.12.2011, 12:38
quelle

1 Antwort

20

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.

    
ernazm 29.12.2011, 14:15
quelle