Kenny Kenny - 1 year ago 440
Android Question

How to implement ItemAnimator of RecyclerView to disable the animation of notifyItemChanged

In my project I need disable the "change" animation of


I investigated in the source of
and had overridden
as below:

private static class ItemAnimator extends DefaultItemAnimator
public boolean animateChange(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder, int fromX, int fromY, int toX, int toY) {
if(oldHolder != null)
dispatchChangeFinished(oldHolder, true);

if(newHolder != null)
dispatchChangeFinished(newHolder, false);

return false;

But I am not sure if I match the spec of the Google document:

According to my understanding source code, if I do not override the method properly, the oldHolder will not be recycled.

Please help me figure out how to override
in a correct way.

Answer Source

I have found the correct solution to just remove the animateChange.

It's very simple. Google has implemented the functionality.

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

Documentation: setSupportsChangeAnimations