SQLite-Daten an einen RecyclerView

Die App enthält Daten in einer SQLite-Datenbank. Die Benutzeroberfläche ist in erster Linie eine RecyclerView. Die Frage ist, wie man am besten Daten aus der Datenbank in die Benutzeroberfläche überträgt und dabei den Haupt-Thread ausschließ

ch hatte ursprünglich geplant, einen CursorLoader, ContentProvider und RecyclerView zu verwenden. Es sieht jedoch so aus, als ob RecyclerView keine sofort einsatzbereite Unterstützung für vom Cursor gelieferte Daten bietet. Dang.

Das lässt mir dann ein paar andere Möglichkeiten ...

AsyncTask zum Laden der Daten, zum Speichern in Modellobjekte und zur Übergabe an den RecyclerView-Adapter. Abgesehen davon, dass es hässlich ist, ist es nicht für Konfigurationsänderungen geeignet.

Ein benutzerdefinierter Loader, der die Daten aus SQL lädt und in Modellobjekte überträgt.

Verwenden Sie einen Cursor-Loader. Wenn der Cursor zurückgegeben wird, durchlaufen Sie ihn, um die Daten in Modellobjekte zu verschieben. Ich vermute, dass dies auf dem Haupt-Thread auftreten würde und die Leistung beeinträchtigen könnte.

Verwenden Sie Otto, um eine Anforderungsnachricht zum Anfordern von Daten zu senden, und geben Sie dann eine Modellobjektsammlung per Rückmeldung zurück. Es kann ~ 500 Objekte geben, also denke ich, dass ich Otto eher dazu missbrauchen kann.

Wenn ich anstelle eines Cursors eine Sammlung von Modellobjekten verwende, hat ein ContentProvider weniger Vorteile, und die Benutzeroberfläche kann bei Datenänderungen nicht mehr automatisch aktualisiert werden (was nützlich sein kann).

Keine dieser Optionen gefällt mir sehr, gibt es einen besseren Weg? Die App ist unter Zeitdruck, was auch immer es ist, muss ziemlich schnell implementiert werden. Leider muss die Benutzeroberfläche horizontal scrollen und zielt nur auf Lollipop ab, sodass RecyclerView eine bessere Wahl zu sein scheint als ListView.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage