情景描述
1、调用mAdapter.notifyItemChanged(position);时,会重复加载图片,出现占位图等。
2、根据tag标记判断是否加载,不起作用。
原因
重复加载的原因就是onBindViewHolder的重复调用。而tag不起作用的原因则是每次更新都会使用一个新的holder。使用新的holder的原因则是RecyclerView默认有一个新旧两个状态的过渡动画,使用这个动画才会有新的holder出现。
解决办法
原因已经知道了,解决办法也是有的,只要为RecyclerView加上下面的代码
mRecyclerView.setItemAnimator(null);
就可以避免新holder的生成,所以tag也就用了作用。
在stackoverflow上有人提出类似问题