SQLite数据到RecyclerView

Oll*_*e C 9 android android-contentprovider android-cursorloader android-sqlite android-recyclerview

该应用程序包含SQLite数据库中的数据.UI主要是RecyclerView.问题是如何最好地将数据从数据库传输到UI,同时避开主线程?

我原计划使用CursorLoader,ContentProvider和RecyclerView.但阅读它看起来像RecyclerView没有对Cursor提供的数据的开箱即用支持.荡.

那给我留下了一些其他选择......

  1. AsyncTask加载数据,将其放入模型对象,并传递到RecyclerView适配器.除了丑陋之外,它不是配置改变友好的.

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

  3. 使用Cursor加载器,当它返回Cursor迭代它时将数据推送到模型对象.我怀疑这会发生在主线程上,可能会损害性能.

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

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

这些选项都没有吸引力,有没有更好的方法?该应用程序在时间压力下,所以无论它需要相当快速实施.不幸的是,UI需要水平滚动并且只针对Lollipop,所以RecyclerView似乎比ListView更好.

psk*_*ink 6

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