SQLite-Daten zu einem RecyclerView

Die App hat Daten in einer SQLite-Datenbank. Die UI ist in erster Linie ein RecyclerView. Die Frage ist, wie man am besten, um Daten aus der Datenbank in die Benutzeroberfläche zu übertragen, während halten Sie den Haupt-Thread?

Ich habe ursprünglich geplant, einen CursorLoader, ContentProvider und RecyclerView zu verwenden. Aber das Lesen ist so aussehen wie RecyclerView hat keine Out-of-the-Box-Unterstützung für Cursor-gelieferte Daten. Dang

Das verlässt mich dann mit ein paar anderen Optionen …

  1. AsyncTask, um die Daten zu laden, legte sie in Modellobjekte und gehe in den RecyclerView Adapter. Abgesehen davon, dass es hässlich ist, ist es nicht config-change freundlich.

  2. Ein benutzerdefinierter Loader, der die Daten aus SQL lädt und in Modellobjekte drückt.

  3. Verwenden Sie einen Cursor-Loader, und wenn es den Cursor zurückgibt, iterieren Sie ihn, um die Daten in Modellobjekte zu schieben. Ich vermute, dass dies auf dem Hauptfaden auftreten und die Leistung beschädigen könnte.

  4. Benutze Otto, um eine Anforderungsnachricht zu senden, um Daten anzufordern und dann eine Modellobjektsammlung durch Rückmeldung zurückzugeben. Möglicherweise gibt es ~ 500 Objekte, so dass ich glaube, ich könnte lieber Otto missbrauchen.

Wenn ich eine Sammlung von Modellobjekten anstelle eines Cursors verwende, sehe ich weniger Nutzen für einen ContentProvider, und ich verliere auch die Fähigkeit für die Benutzeroberfläche, die Datenänderungen automatisch zu aktualisieren (was nützlich sein kann).

Keine dieser Optionen spricht viel an, gibt es einen besseren Weg? Die app ist unter zeitdruck so was auch immer es braucht, um ziemlich schnell zu implementieren. Leider muss die Benutzeroberfläche horizontal scrollen und nur auf Lollipop zielen, also RecyclerView scheint eine bessere Wette als ListView.

Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.