RecyclerView调用notifyItemChanged闪烁问题

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;
}1234567891011121314151617181920

只要设置为false,就可以不显示动画了,也就解决了闪烁问题。
代码其实就一句话。

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


本文来自 大脸铭哥 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/u014537423/article/details/52777978?utm_source=copy

猜你喜欢

转载自blog.csdn.net/xieyipeng1998/article/details/82928021