我为RecyclerView编写了自己的CursorAdapter,如下面的链接:https://gist.github.com/skyfishjy/443b7448f59be978bc59
然后我发现每当我在数据库中更改某些东西并希望在RecyclerView中显示它时,我需要通过db.query()创建一个新的Cursor并使用CursorAdpater的changeCursor().由于query()将扫描数据库中的所有行,因此即使我只将一行插入数据库,当数据量很大时,RecyclerView也会缓慢刷新.
此外,众所周知,RecyclerView为开发人员提供了notifyItemInserted / Removed(position),以便RecyclerView可以部分刷新,这对内存/时间有用且有益.但是,当我使用CursorAdapter时,我不知道何时以及如何使用这些方法,因为更改光标不会直接向使用RecyclerView的数据集绑定添加内容,而是实际刷新所有项目.
那么有没有更好的方法在RecyclerView中显示数据库中的数据并使用RecyclerView的改进方法来显示各种数据库?
最佳答案
我可以告诉你我做了什么……
A.使用Loader加载游标.
B.将光标复制到附加到适配器的arraylist(光标不直接连接到适配器),关闭光标.如果没有很多数据,那么效果很好 – 如果有很多行,那么我会将其中的一些加载到arraylist然后当用户向下滚动时我会再次查询并从数组的最后一行加载.
C.当用户想要删除或添加一些东西时,我会首先在arrayList上执行操作(UI线程)notifiyItemChanged然后更改db(Back thread)
希望我帮忙.
A.使用Loader加载游标.
B.将光标复制到附加到适配器的arraylist(光标不直接连接到适配器),关闭光标.如果没有很多数据,那么效果很好 – 如果有很多行,那么我会将其中的一些加载到arraylist然后当用户向下滚动时我会再次查询并从数组的最后一行加载.
C.当用户想要删除或添加一些东西时,我会首先在arrayList上执行操作(UI线程)notifiyItemChanged然后更改db(Back thread)
希望我帮忙.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。