Cursorloader erfrischt sich nicht über DatenänderungenAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Cursorloader erfrischt sich nicht über Datenänderungen

Post by Anonymous »

Ich habe ein bisschen Probleme mit Androids Cursorloader. Ich verwende einen Cursorloader, um Daten von meinem eigenen ContentProvider zu laden. Es lädt die Daten gut und hält sie bei Orientierungsänderungen bei, aktualisiert jedoch nicht die Datenänderung. Übrigens verwende ich den Cursorloader, der in der Kompatibilitätsbibliothek erhältlich ist. Ich habe mehrere Beiträge auf dieser Seite überprüft, aber nichts scheint es zu beheben. < /P>
Hier erstelle ich den Loader: < /p>
@Override
public Loader onCreateLoader(int id, Bundle args) {
switch (id) {
case TODO_EVIDENCES_LOADER_ID: {
return new CursorLoader(this, BuilderToDoContentProvider.TODO_EVIDENCES_CONTENT_URI, null, null, new String[]{token_id}, null);
}
}
return null;
}
< /code>
Dies ist die Methode, die ich auf der Abfragemethode auf meinem ContentProvider aufrufe: < /p>
private Cursor getToDoEvidences(String selection){
String evidenceQuery = "SELECT " + BuilderToDoContract.Evidence.TABLE_NAME + "." + BuilderToDoContract.Evidence._ID + ", " +
BuilderToDoContract.Evidence.TABLE_NAME + "." + BuilderToDoContract.Evidence._PATH + ", " + BuilderToDoContract.Evidence.TABLE_NAME + "." + BuilderToDoContract.Evidence._TIMESTAMP + ", " +
BuilderToDoContract.Evidence.TABLE_NAME + "." + BuilderToDoContract.Evidence._TYPE +
" FROM " + BuilderToDoContract.Evidence.TABLE_NAME + " WHERE " + selection;
Cursor result = database.rawQuery(evidenceQuery, null);
result.setNotificationUri(getContext().getContentResolver(), TODO_EVIDENCES_CONTENT_URI);
return database.rawQuery(evidenceQuery, null);
}
< /code>
Dies ist die Methode, die ich auf der Löschmethode meines ContentProviders aufrufe: < /p>
private int deleteEvidence(String[] selection) {
int result = database.delete(BuilderToDoContract.Evidence.TABLE_NAME, BuilderToDoContract.Evidence._PATH + " = ?" , selection);
getContext().getContentResolver().notifyChange(TODO_EVIDENCES_CONTENT_URI, null);
return result;
}
< /code>
Wie Sie sehen, erstelle ich den Cursorloader, rufe setNotificationuri () in meiner Abfrage und aufrufe Notifychange () auf der Löschmethode auf, die dieselbe URI übergeben, aber Onloadfineed () wird bei Datenänderungen nicht ausgelöst. Und ich schließe den Cursor nirgendwo. Adapter, der an eine Rasteransicht gebunden ist. Ich mache das, weil ich dem Evidenzobjekt, der im Cursor nicht vorhanden ist, andere Daten hinzufügen muss.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post