更新RecyclerView项ProgressBar而不在适配器上调用notifyItemChanged(int)

时间:2016-07-25 12:38:44

标签: android multithreading android-layout android-recyclerview android-adapter

我正在尝试更新progressBar,它是其中一个RecyclerView项目的一部分。我知道我可以用两种方式做到这一点,

方法1:通过调用notifyItemChanged(position)

刷新项目行

方法2:使用LayoutMananger对象上的方法findViewByPosition()访​​问视图。

但不幸的是,他们中没有一个人在我的情况下工作。

如果我使用第一个,整个项目将重新绘制,recyclerview的背景颜色为灰色,项目为白色,因此用户可以注意到整个项目刷新。

如果我尝试第二个,滚动时我会遇到问题。

我想像WhatsApp那样更新进度。提前致谢

1 个答案:

答案 0 :(得分:17)

  

如果我使用第一个,整个项目将重新绘制,recyclerview的背景颜色为灰色,项目为白色,因此用户可以注意到整个项目刷新。

我也遇到了这个问题。要修复它,您需要关闭默认项目更改动画。一旦关闭项目更改动画,您的recyclerView项目将更新而不会闪烁/跳跃,允许您毫无问题地使用notifyItemChanged(int)

关闭默认项目更改动画,如下所示:

((SimpleItemAnimator) myRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false);