RecycleView实现网格整页滑动

本文详细介绍了如何通过RecycleView结合GridLayoutManger实现网格整页滑动的需求,包括需求分析、实现过程及使用注意事项。在监听用户触摸事件中,处理滑动和点击事件,同时提出在滑动后点击事件的响应问题,期待解决方案。

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

需求分析

这篇博客写作来源是项目需求
产品经理说:用六宫格展示一页数据,用户左滑/右滑的时候,要整页滑动的效果。
解释这句话的意思就是:
(1)一页只能展示6条数据;
(2)只支持横向滑动,用户只能一页一页的滑(相当于用户一次要滑动6条数据);
(3)用户左滑是向前翻页,右上角页码随之变换;
(4)用户右滑是向后翻页,右上角页码随之变换;
(5)点击单条数据,可以跳转这道菜的详情页面。
以下是产品原型图:
在这里插入图片描述
我在github上逛了挺久的,就是找不到贴合我们实际项目需求的控件。我认为这个功能类似于下拉刷新和上拉加载更多,所不同的是,首先,这个不是垂直方向的,其次,滑动的话只能按照页面滑,一次变更6条数据。
既然如此,只好自己动手动脑来实现了。
我的想法其实很简单粗暴,就是自己监听用户是向左滑还是右滑还是在点击item,之后做不同的滑动和点击事件处理。这个方法一开始没有想到,试了其他方案都不成功,最后被逼出的这个。这也说明,项目需求有时候不会一眼就做出来的时候,多试试其他方案,试的过程中,想法也就出来了。

实现:

采用recycleview + gridlayoutmanager,在recycleview中监听用户的触摸事件,核心代码如下:
注意:当用户滑动的时候,我们自己处理此事件;但是如果是用户点击item的话,就继续交回给父控件自己处理,因为recycleview本身就是支持点击事件的,所以之前返回什么值,就返回什么值,不做改变就好。
但是遗留了一个问题:就是滑动之后,再点击,第一次不响应这个点击,之后开始响应点击事件了。
希望能有人帮忙解答。

   public class MyRecycleView extends RecyclerView {
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值