我目前有一个回收站视图,其数据每5秒更新一次.要更新列表中的数据,我正在使用
notifyItemChanged(position);
notifyItemRangeChanged(position, mList.size());
Run Code Online (Sandbox Code Playgroud)
每次我调用notifyItemChanged()时,我的recycler视图上的项都会正确更新,但是它会闪烁,因为这会导致再次调用onBindViewHolder.因此,每次都是新鲜的负载.如果可能的话,我怎样才能防止这种情况发生?
我使用的是RecyclerView一个SortedList使用a的数据SortedListAdapterCallback.我想禁用onChange事件的动画,但保留它们为onInserted/ onRemoved/ onMoved.我曾尝试调用setSupportsChangeAnimations(false)上DefaultItemAnimator使用的RecyclerView,但动画仍然出现.如果我调用setItemAnimator(null) 所有动画都按预期成功删除了.
我试着查看实现,看起来似乎supportsChangeAnimations是true,RecyclerView通过保持旧的viewHolder并将其交叉淡入到新的viewHolder ,将动画更改事件.我不希望这样.如果supportsChangeAnimations是false,新老viewHolders然而,将相同的对象,而且会有替代地是onMoved动画从x到x(即没有实际移动).然而,这意味着该项目将产生令人讨厌的反弹效果.我也不想要那个,我根本不需要动画.:(
来自DefaultItemAnimator.java:
@Override
public boolean animateChange(ViewHolder oldHolder, ViewHolder newHolder,
int fromX, int fromY, int toX, int toY) {
if (oldHolder == newHolder) {
// Don't know how to run change animations when the same view holder is re-used.
// run a move animation …Run Code Online (Sandbox Code Playgroud)