目前正在做一个文件下载的功能,现在在 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 的复用机制了解的不深入。目前还想不到合适的逻辑来解决复用导致的显示错乱的问题。
希望各位大佬给小弟提点建议。