RecyclerView:notifyItemChanged刷新闪烁问题

出处:https://blog.csdn.net/u014537423/article/details/52777978


RecyclerView调用notifyItemChanged闪烁问题相信很多人都遇到过。

那是因为recyclerView默认设置的动画DefaultItemAnimator造成的,

DefaultItemAnimator继承自SimpleItemAnimator,里面有个方法是

/**

    * Sets whether this ItemAnimator supports animations of item change events.

    * If you set this property to false, actions on the data set which change the

    * contents of items will not be animated. What those animations do is left

    * up to the discretion of the ItemAnimator subclass, in its

    * {@link #animateChange(ViewHolder, ViewHolder, int, int, int, int)} implementation.

    * The value of this property is true by default.

    *

    * @param supportsChangeAnimations true if change animations are supported by

    *                                this ItemAnimator, false otherwise. If the property is false,

    *                                the ItemAnimator

    *                                will not receive a call to

    *                                {@link #animateChange(ViewHolder, ViewHolder, int, int, int,

    *                                int)} when changes occur.

    * @see Adapter#notifyItemChanged(int)

    * @see Adapter#notifyItemRangeChanged(int, int)

    */

    public void setSupportsChangeAnimations(boolean supportsChangeAnimations) {

        mSupportsChangeAnimations = supportsChangeAnimations;

    }

只要设置为false,就可以不显示动画了,也就解决了闪烁问题。

代码其实就一句话。

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

你可能感兴趣的:(RecyclerView:notifyItemChanged刷新闪烁问题)