目前正在做一个文件下载的功能,现在在 RecyclerView 条目中的 Progressbar 刷新问题上卡住了。项目中是通过观察者模式来监听文件下载的状态,通过回调观察者对象中的 updateProgress(FileInfo fileinfo)方法(回调频率为 50ms)来实现 RecyclerView 中 item 的状态更新。
目前做了一下几种尝试:
每次回调 updateProgress(FileInfo fileinfo)通过获取 FileInfo 对象所在 RecyclerView 的 position 位置,对单个 item 进行刷新。虽然可以实现功能,但是由于刷新频率太高,会造成界面卡顿。
每次回调 updateProgress(FileInfo fileinfo)时 通过调用 notifyDataChanged()方法来对整个 RecyclerView 进行刷新。同样由于更新频率太高滑动起来会感受到明显的卡顿。
在 ViewHolder 中注册观察者,然后直接在 ViewHolder 中对 item 中的 View 进行刷新。滑动起来的体验最好,但是由于我太菜,对 RecyclerView 的复用机制了解的不深入。目前还想不到合适的逻辑来解决复用导致的显示错乱的问题。
希望各位大佬给小弟提点建议。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.