该应用在 SQLite 数据库中有数据。 UI 主要是一个 RecyclerView。问题是如何最好地将数据从数据库传输到 UI,同时远离主线程?
我最初计划使用 CursorLoader、ContentProvider 和 RecyclerView。但是阅读它似乎 RecyclerView 没有对 Cursor 提供的数据的开箱即用支持。该死的。
然后我还有其他一些选择...
AsyncTask 加载数据,将其放入模型对象,然后传递到 RecyclerView Adapter。除了丑陋之外,它对配置更改也不友好。
一个自定义加载器,它从 SQL 加载数据并将其推送到模型对象中。
使用 Cursor 加载器,当它返回 Cursor 时,迭代它以将数据推送到模型对象中。我怀疑这会发生在主线程上并且可能会损害性能。
使用Otto发送请求消息请求数据,然后通过返回消息返回一个模型对象集合。可能有大约 500 个对象,所以我想我可能宁愿滥用奥托这样做。
如果我使用的是模型对象集合而不是 Cursor,我会发现 ContentProvider 的好处较少,而且我还会失去 UI 在数据更改时自动刷新的能力(这可能很有用)。
这些选项都没有太大吸引力,有没有更好的方法?该应用程序面临时间压力,因此无论它是什么,都需要相当快地实现。不幸的是,UI 需要水平滚动并且只针对 Lollipop,因此 RecyclerView 似乎确实比 ListView 更好。
最佳答案
使用这个简单的适配器 https://gist.github.com/Shywim/127f207e7248fe48400b ,或者你可以使用 android.support.v17.leanback.widget.ItemBridgeAdapter 和 android.support.v17.leanback.widget.CursorObjectAdapter 但为什么要让自己的生活更艰难?
关于android - SQLite 数据到 RecyclerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28195005/