RecycleView:实现拖拽

RecycleView之拖拽功能的实现

RecycleView拖拽功能是一个非常常见的一个功能,要想实现这个功能,其实不用耗费太多的时间,GOOGLE已经帮我们封装好了,我们只需要重写ItemTouchHelper这个类即可

话不多说,干货来了

package com.xxxx.adapter;

import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.ItemTouchHelper;

public class RecycleViewItemCallBack extends ItemTouchHelper.Callback {
   
    public interface ItemTouchHelperAdapter {
   
        /**
         * 当Item被拖拽排序移动到另一个Item的位置的时候被回调
         *
         * @param fromPosition 起始位置
         * @param toPosition   移动的位置
         */
        void onItemMove(int fromPosition, int toPosition);

        /***
         * 侧滑删除时被调用
         * @param position
         */
        void onItemSwipe(int position);

        /***
         * 拖拽结束后进行回调
         * @param recyclerView
         * @param viewHolder
         */
        void onItemClearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder);

        /***
         * item 被选中时的状态改变
         * @param viewHolder
         * @param actionState  当前Item的状态
         * ItemTouchHelper.ACTION_STATE_IDLE   闲置状态
         * ItemTouchHelper.ACTION_STATE_SWIPE  滑动中状态
         * ItemTouchHelper.ACTION_STATE_DRAG   拖拽中状态
         */
        void onItemSelectChange(RecyclerView.ViewHolder viewHolder, int actionState);
    }

    private ItemTouchHelperAdapter adapter;
    /**
     * 是否可以被滑动
     */
    private Boolean                isCanSwipe = true;
    /**
     * 是否可以被拖拽
     */
    private Boolean                isCanDrag  = false;

    public RecycleViewItemCallBack(ItemTouchHelperAdapter adapter) {
   
        this.adapter = adapter;
    }

    public void setAdapter(ItemTouchHelperAdapter adapter) {
   
        this.adapter = adapter;
    }

    /***
     * 设置是否可以被滑动
     * @param isCanSwipe
     */
    public void setIsCanSwipe(Boolean isCanSwipe) {
   
        this.isCanSwipe = isCanSwipe;
    }

    /***
     * 当用户拖拽或滑动item时,设置拖拽或滑动的方向
     * @param recyclerView
     * @param viewHolder
     * @return
     */
    @Override
    public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
   
        RecyclerView.LayoutManager layoutManager = recyclerView.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值