recyclerView列表使用Timer定时器复用错乱的问题
来源:互联网 发布:php看什么书 编辑:程序博客网 时间:2024/06/09 22:14
相信许多小哥哥,小姐姐都遇到过recycleview列表复用错乱的问题,尤其是l列表中用到Timer定时器的时候,更容易出问题。
看下图:(只截取了列表的部分)
分析列表错乱的原因:
每一个item都有一个距开赛时间的倒计时(这个是用Timer自定义的),当item滑出界面的时候,timer 还在执行,没有停止,然后下个item复用了上个item的view,
但是注意了,timer还在执行,因为复用,操作的是当前item 的view。 即出现了item的复用问题。
那如何解决呢?
当然是在item滑出屏幕的时候,把对应的timer给取消了即可。
看Recycleview.Adapter的源码,有一个方法onViewRecycled()
大概意思是,当视图被回收的时候调用。
所以我们只需要重写此方法,
从holder里面取出Timer。然后取消Timer,再把Timer置NULL(置NULL原因:快速滑动时,会产生大量Timer对象,为了内存优化,所以这里置NULL)。
其他的逻辑就好操作了。
@Override
public void onViewRecycled(RecyclerView.ViewHolder holder) {
super.onViewRecycled(holder);
MyViewHolder mHolder = (MyViewHolder) holder;
Timer timer = (Timer) mHolder.scoreMinute.getTag();
if (timer != null) {
timer.cancel();
timer=null;
}
}
- recyclerView列表使用Timer定时器复用错乱的问题
- RecyclerView复用的一些问题(Checkbox错乱)
- RecyclerView与CheckBox结合使用错乱问题
- timer 定时器的使用
- Timer定时器的使用
- 定时器Timer的使用
- Timer 定时器的使用
- timer定时器的使用
- Timer定时器的使用
- Timer定时器的使用
- RecyclerView使用notifyItemRemoved错乱
- recyclerView的checkBox复用错乱问题解决方案
- android 定时器 Timer 使用 及其遇到的问题
- java timer定时器的使用
- Boost::timer 定时器的使用
- Java Timer 定时器的使用
- Java Timer 定时器的使用
- Java Timer 定时器的使用
- 网站点击流数据分析
- 【广告项目】ftp+uploadify实现图片多图片上传预览
- I2C总线浅谈之(二)---时序
- 序号互换
- 如何查看apk包里的targetSdkVersion
- recyclerView列表使用Timer定时器复用错乱的问题
- 51nod 1060 最复杂的数
- CXF之jaxws:endpoint对spring bean的引用
- codeforces/2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest, qualification stage (B)
- 使用idea 搭建ssm+maven+logback项目
- 给ESXi虚拟机硬盘瘦身
- 给定一个整数N,那么N的阶乘N!末尾有多少个0
- C++复习第四天 函数重载
- HashMap底层实现原理及面试问题