监听RecyclerView滑动事件

本文介绍如何避免使用ScrollView嵌套RecyclerView的方式,并提供了一种监听RecyclerView滑动事件的有效方法。通过使用addOnScrollListener,可以记录总的滑动距离,适用于需要监听滑动事件的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

监听RecyclerView的滑动事件,一开始我总会选择使用ScrollView嵌套RecyclerView的方式,因为ScrollView有自带的监听滑动方法。

 

但是也有缺点,上拉加载更多数据是无效的。 如果使用了ScrollView嵌套RecyclerView,那么一进入页面,RecyclerView的所有数据都会显示出来,这在数据很多的时候,会出现内存溢出,所以谷歌官方也是不推荐使用的。

 

如果是一个页面除了RecyclerView顶上还有别的元素那就给RecyclerView加头布局,底部如果还有元素,就加脚布局。

总之放弃拿ScrollView嵌套RecyclerView

 

加头布局简单,但是只用一个RecyclerView想监听滑动事件就比较麻烦了,需要多做一些操作:

 

RecyclerView有自带的监听滑动方法

addOnScrollListener 
      mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
            }

            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);

                }

            }
        });

onScrolled方法里回调了一个dy参数,就是Y轴数值

但是这个方法记录的Y轴是单次的。  也就是说,滑动完成之后,dy会重新变成0

 

这时候我们想要的是 总共滑动的距离,所以我们可以这样:

int scrollY += dy;

把Y轴滑动的距离存储起来相加,这时候的这个scrollY就是总共滑动的Y值了

 

值得一提的是:最好把scrollY的值保存起来 , 否则当用户点击跳转到别的页面再回来当前页面的时候,scrollY的值有可能会变成0

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值