RecycleView实现上下拖动item改变item顺序以及左滑消失

以为RecycleView没有item监听 所以我们需要通过接口回调的方式来实现

//先写一个接口
public interface ItemTouchHelperAdapter {

    void onItemMove(int fromPosition,int toPosition);//移动时方法
    void onItemDissmiss(int position);//消失时方法
}
//在RecycleView适配器中实现ItemTouchHelperAdapter接口 完成这两个方法
@Override
public void onItemMove(int fromPosition, int toPosition) {
	//swap 交换
    Collections.swap(list,fromPosition,toPosition);
    //注意是Moved的刷新
    notifyItemMoved(fromPosition,toPosition);
}

@Override
public void onItemDissmiss(int position) {
    list.remove(position);
    notifyItemRemoved(position);
}
//在主类中
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback() {
    @Override
    public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
        int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;//允许上下拖动
        int swipeFlags = ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;//允许左右拖动 只写左就只允许左拖动
        return makeMovementFlags(dragFlags,swipeFlags);
    }

    @Override
    public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder viewHolder1) {
        adapter.notifyItemMoved(viewHolder.getAdapterPosition(),viewHolder1.getAdapterPosition());
        return true;
    }

    @Override
    public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
        adapter.onItemDissmiss(viewHolder.getAdapterPosition());
    }
});
itemTouchHelper.attachToRecyclerView(rv);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值