Данные SQLite для RecyclerView

Приложение имеет данные в базе данных SQLite. Пользовательский интерфейс - это в первую очередь RecyclerView. Вопрос в том, как лучше всего перенести данные из базы данных в пользовательский интерфейс, оставив при этом основной поток?

Первоначально я планировал использовать CursorLoader, ContentProvider и RecyclerView. Но чтение вокруг выглядит так, как будто RecyclerView не имеет встроенной поддержки данных, поставляемых курсором. Dang.

Это тогда оставляет меня с несколькими другими вариантами ...

AsyncTask для загрузки данных, помещения их в объекты модели и передачи в адаптер RecyclerView. Помимо того, что это некрасиво, это не удобно для изменения конфигурации.

Пользовательский загрузчик, который загружает данные из SQL и помещает их в объекты модели.

Используйте загрузчик Cursor, и когда он вернется, Cursor итерирует его, чтобы вставить данные в объекты модели. Я подозреваю, что это произойдет в главном потоке и может повредить производительность.

Используйте Otto, чтобы отправить сообщение-запрос для запроса данных, а затем вернуть коллекцию объектов модели с помощью сообщения возврата. Там может быть ~ 500 объектов, так что я думаю, что могу злоупотреблять Отто, делая это.

Если я использую коллекцию объектов модели вместо курсора, я вижу меньшую выгоду для ContentProvider, и я также теряю возможность для пользовательского интерфейса автоматически обновлять изменения данных (что может быть полезно).

Ни один из этих вариантов не очень привлекательный, есть ли лучший способ? Приложение испытывает нехватку времени, поэтому все, что требуется, должно быть достаточно быстрым для реализации. К сожалению, пользовательский интерфейс должен прокручиваться по горизонтали и нацелен только на Lollipop, поэтому RecyclerView выглядит лучше, чем ListView.

Ответы на вопрос(1)

Ваш ответ на вопрос