最近在做一个计时的项目,全局监听计时状态,那计时列表也需要实时更新,但是在更新,调用timeAdapter.updateItem(item);时,发现item在不停的闪烁,添加tag也不起作用。
后来看源码在知道,闪烁的原因就是onBindViewHolder的重复调用。而tag不起作用的原因则是每次更新都会使用一个新的holder。使用新的holder的原因则是RecyclerView默认有一个新旧两个状态的过渡动画,使用这个动画才会有新的holder出现。
原因已经知道了,解决办法肯定是有的,只要为RecyclerView加上下面的代码:
recyclerView.setItemAnimator(null);
这样就可以避免新holder的生成,从而避免item闪烁。