2017-02-21 1197 views
4

我目前有一个回收者视图,其数据每5秒更新一次。要更新列表中的数据,我使用如何防止RecyclerView项目在notifyItemChanged(pos)后闪烁?

notifyItemChanged(position); 
notifyItemRangeChanged(position, mList.size()); 

每次我打电话notifyItemChanged(),我回收视图更新项目正常,但是,它会闪烁,因为这会导致onBindViewHolder再次调用。所以它就好像每次都是新鲜的负载。如果可能,我怎样才能防止这种情况发生?

回答

7

RecyclerView内置动画,通常会增加一个不错的抛光效果。你的情况,你会希望将其禁用:

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

(默认回收视图动画应该已经是SimpleItemAnimator一个实例)

+0

是的!这正是我需要的。 – portfoliobuilder

+1

但我认为这也会禁用方法的默认动画,如notifyItemInserted – user6650650

+0

@ user6650650适合我。你也是对的。谢谢! – portfoliobuilder

3

您可以禁用项目的动画。

mRecyclerView.setItemAnimator(null);