SQLite 数据到 RecyclerView

SQLite data to a RecyclerView

应用程序在 SQLite 数据库中有数据。 UI 主要是一个 RecyclerView。问题是如何最好地将数据从数据库传输到 UI,同时远离主线程?

本来打算用CursorLoader、ContentProvider、RecyclerView。但是阅读它似乎 RecyclerView 没有对 Cursor 提供的数据的开箱即用支持。该死的

然后我还有其他一些选择...

  1. AsyncTask加载数据,放入模型对象,传入RecyclerView Adapter。除了丑陋之外,它对配置更改不友好。

  2. 一个自定义加载程序,它从 SQL 加载数据并将其推送到模型对象中。

  3. 使用 Cursor 加载器,当它 returns 时,Cursor 遍历它以将数据推送到模型对象中。我怀疑这会发生在主线程上并且可能会损害性能。

  4. 使用Otto发送一个请求消息来请求数据,然后return一个模型对象集合通过return消息。可能有大约 500 个对象,所以我想我可能宁愿滥用奥托这样做。

如果我使用的是模型对象集合而不是 Cursor,我认为 ContentProvider 的好处较少,而且我也失去了 UI 在数据更改时自动刷新的能力(这可能是有用)。

None这几个选项的吸引力很大,有没有更好的办法?该应用程序面临时间压力,因此无论它是什么,都需要相当快地实施。不幸的是 UI 需要水平滚动并且只针对 Lollipop,因此 RecyclerView 似乎比 ListView 更好。

使用这个简单的适配器 https://gist.github.com/Shywim/127f207e7248fe48400b,或者您可以使用 android.support.v17.leanback.widget.ItemBridgeAdapterandroid.support.v17.leanback.widget.CursorObjectAdapter但为什么要让自己的生活更艰难?