Android --- RecyclerViwe中使用SnapHelper报错:“An instance of OnFlingListener already set(1)

  • 7源码解析:

1.SnapHelper 的应用情景


通常我们使用RecyclerView来实现简单图片轮播图Banner时,需要实现按图片翻页效果,但RecyclerView会在滚动过程中是“过程停留”无法达到“翻页”效果,这时候我们就不得不借助SnapHelper类来使得RecyclerView具备类似ViewPager“翻页”效果的能力。但随着页面UI布局的复杂性,有时候我们需要嵌套RecyclerView并结合SnapHelper。

2.问题现象


多层RecyclerView嵌套时使用SnapHelper工具类配合,向下滚动Item列表正常,但向上滚动会立即强退并杀死app程序。报错问题:“java.lang.IllegalStateException: An instance of OnFlingListener already set.”

3.分析原因


首先来了解一个概念,手指在屏幕上滑动RecyclerView然后松手,RecyclerView中的内容会顺着惯性继续往手指滑动的方向继续滚动直到停止,这个过程叫做Fling。Fling操作从手指离开屏幕瞬间被触发,在滚动停止时结束。而OnFlingListener显然就是监听Fling滚动事件的监听器。

4.原因重点:(SnapHelper被多次创建并绑定到同一个RecyclerView)


通常我们在做RecyclerView的嵌套时总会遇到这样的问题,是因为每次在onBindViewHolder中都这样写:

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值