Ich habe eine ListActivity
, die eine SimpleCursorAdapter
verwendet, um Datenbankinhalt anzuzeigen. Ich habe Probleme, die Ansicht aktualisiert zu bekommen, wenn sich die zugrunde liegende Datenbank ändert.Android: Cursor requery beim Ersetzen der gesamten Datenbank
Als ein Experiment, ich habe einen Anruf Cursor.requery()
in der Aktivität onResume()
, zum Debuggen, so alles, was ich tun muss, ist umdrehen zu einer anderen Aktivität und zurück und es sollte eine Aktualisierung erzwingen. Ich habe auch onContentChanged()
zum Debuggen überschrieben. Es ergibt sich, dass requery()
aufgerufen wird, aber dies führt nicht zu einem Aufruf an onContentChanged()
.
Ich vermute, der Cursor verwendet veraltete zwischengespeicherte Daten. Die Operation, die die Änderung veranlasst, beinhaltet das Löschen und Ersetzen der gesamten Datenbank. Anstatt einfach erneut zu requirieren, denke ich, dass ich den Cursor wegwerfen und ihn von Grund auf neu erstellen muss.
Ich habe versucht, die zugrunde liegende Datenbank in Verbindung mit Cursor.requery()
zu schließen und wieder zu öffnen, aber der Cursor scheint nicht zu mögen, die DB gezogen unter seinen Füßen wie folgt. (Die Liste endet leer.)
Edit: Ich habe auch versucht adapter.notifyDataSetChanged()
neben der requery()
in onResume()
aufrufen, aber es macht keinen Unterschied.
Irgendwelche Ratschläge?
Ja, das hat auch keinen Effekt. Ich werde die Frage aktualisieren. –