RecyclerView实现拖动排序

49 篇文章 0 订阅
47 篇文章 0 订阅

1、添加万能适配器依赖:

implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.46'

2、编写RecyclerView适配器,继承BaseItemDraggableAdapter

public class CategoryEditAdapter extends BaseItemDraggableAdapter<CategorieBaen, BaseViewHolder> {

    private List<CategorieBaen> engines;

    public CategoryEditAdapter(@Nullable List<CategorieBaen> data, String string) {
        super(R.layout.item_category_edit, data);
        this.engines = data;
  
    }


    @Override
    protected void convert(BaseViewHolder helper, CategorieBaen item) {
        helper.setText(R.id.item_name_tv, item.getName());
        ImageView item_close_iv = helper.getView(R.id.item_close_iv);
 
    }
}

3、编写item回调,继承ItemDragAndSwipeCallback,设置列表第一个和第二个不能拖动位置

public class HomeItemDragAndSwipeCallback extends ItemDragAndSwipeCallback {

    public HomeItemDragAndSwipeCallback(BaseItemDraggableAdapter adapter) {
        super(adapter);
    }

    @Override
    public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder source, RecyclerView.ViewHolder target) {
        if (source.getAdapterPosition() == 0||source.getAdapterPosition() == 1||source.getAdapterPosition() ==-1||
                target.getAdapterPosition() == 0||target.getAdapterPosition() == 1||target.getAdapterPosition() ==-1){
            return false;
        }else {
            return true;
        }
    }

    @Override
    public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
        return super.getMovementFlags(recyclerView, viewHolder);
    }
}

4、关联RecyclerView,editAdapter1为CategoryEditAdapter ,tag_rv1为RecyclerView

 private void setItemMoveEvent() {
        HomeItemDragAndSwipeCallback itemDragAndSwipeCallback = new HomeItemDragAndSwipeCallback(editAdapter1);
        ItemTouchHelper itemTouchHelper = new ItemTouchHelper(itemDragAndSwipeCallback);
        itemTouchHelper.attachToRecyclerView(tag_rv1);
        // 设置拖拽
        editAdapter1.enableDragItem(itemTouchHelper);
        editAdapter1.setOnItemDragListener(new OnItemDragListener() {
            @Override
            public void onItemDragStart(RecyclerView.ViewHolder viewHolder, int i) {
                mVibrator.vibrate(60);
                LogUtils.showLog("onItemDragStart:" + i);
            }

            @Override
            public void onItemDragMoving(RecyclerView.ViewHolder viewHolder, int i, RecyclerView.ViewHolder viewHolder1, int i1) {
                LogUtils.showLog("onItemDragMoving:" + "i:" + i + ":i1:" + i1);
            }

            @Override
            public void onItemDragEnd(RecyclerView.ViewHolder viewHolder, int i) {
                LogUtils.showLog("onItemDragEnd:" + i);

            }
        });
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值