基于RecyclerView实现侧滑删除

列表的条目侧滑删除可以说是最熟悉不过的了,它的实现方法也有很多,这次我给大家带来的是基于RecyclerView实现的。关于RecyclerView的使用在本文中没有提及,可以看看这篇:RecyclerView的使用先看看效果图: 大概思路为:重写RecyclerView的onTochEvent方法点击时,获取点击的位置,根据位置(坐标)去获取点击的条目对应的View,顺...
摘要由CSDN通过智能技术生成

列表的条目侧滑删除可以说是最熟悉不过的了,它的实现方法也有很多,这次我给大家带来的是基于RecyclerView实现的。关于RecyclerView的使用在本文中没有提及,可以看看这篇:RecyclerView的使用

先看看效果图:
这里写图片描述

大概思路为:

  • 重写RecyclerView的onTochEvent方法
  • 点击时,获取点击的位置,根据位置(坐标)去获取点击的条目对应的View,顺便获取条目的索引,服务于后面删除数据的逻辑。
  • 滑动时,跟着手指滑动,但要防止超出边界的处理
  • 松开时,获取手势、滑动的速度和条目View所在的位置,并作出对应的处理

根据以下的问题来对思路的展开

1.如何获取当前点击到的条目?
//在按下去的时(ACTION_DOWN)获取
 View view = this.findChildViewUnder(startX, startY);//获取点击到的View
                    mViewHolder = (SlidesAdapter.SlidesViewHolder) this.findContainingViewHolder(view);//获取ViewHolder
 position = mViewHolder.getAdapterPosition();//获取当前条目的所有
 mItemView = mViewHolder.ContentView;
 deleteView = mViewHolder.deleteView;
 deleteViewWidth = deleteView.getWidth();//获取侧滑出的功能图片的宽
2.如何处理跟着手指滑动

可以使用View的ScrollBy(int x,int y)或者View的ScrollTo(int x,int y)方法,其实ScrollBy方法里边调用的是ScrollTo方法,它的源代码:

 public void scrollBy(int x, int y) {
        scrollTo(mScrollX + x, mScrollY + y);
    }

所以为了方便,在实现View随着手指滑动时,使用ScrollBy。
这里用图解释下mScrollX和mScrollY,其中粉红色代表View的内容:
这里写图片描述

然后还有防止把View滑动出边界,这里限制的边界是左边滑动不能超过删除图标的宽度,右边不能超出原来的边界(也就是在没有打开删除图标时,条目的内容不能向右滑动)

//滑动时的逻辑(ACTION_MOVE)
                int deltaX = mLastX - startX;//<0:向右滑动、>0:向左滑动
                int deltaY = mLastY - startY;
                int scrollX = mItemView.getScrollX();
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值