android - SQLite 数据到 RecyclerView

标签 android android-sqlite android-contentprovider android-recyclerview android-cursorloader

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

我最初计划使用 CursorLoader、ContentProvider 和 RecyclerView。但是阅读它似乎 RecyclerView 没有对 Cursor 提供的数据的开箱即用支持。该死的。

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

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

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

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

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

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

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

最佳答案

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

关于android - SQLite 数据到 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28195005/

相关文章:

android - 带有 RecyclerView 的 fragment : java. lang.IllegalArgumentException : Scrapped or attached views may not be recycled. isScrap:false isAttached:true

android - Play 商店中的 SAF 客户端示例

android - 使用 SyncAdapter 同步联系人,工作

java - 从 SQLite 列添加数据

android - 当应用程序处于后台或关闭状态时,无法将记录从 Firebase 消息服务插入 SQLite 数据库

java - 我的 Room 出现 "foreign key mismatch"错误的原因是什么?

android:添加日历事件时使用 EXDATE 格式

android - 我的 onHandleIntent() 没有被调用?

android - 不使用 WRITE_EXTERNAL_STORAGE 共享图像?

java - 无法在 Android 的 eclipse 中找到库