import android.graphics.Canvas;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import tsou.cn.studyrecycler.R;
/**
- Created by Administrator on 2018/10/11 0011.
*/
public class MyItemTouchHelperCallback extends ItemTouchHelper.Callback {
private ItemTouchMoveCallback mMoveCallback;
public MyItemTouchHelperCallback(ItemTouchMoveCallback callback) {
this.mMoveCallback = callback;
}
//Callback回调监听时先调用的,用来判断当前是什么动作,比如判断方向(监听哪个方向的拖动)
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
//放向:up、down、left、right
//常量:
// int up = ItemTouchHelper.UP;//1 0x0001
// int down = ItemTouchHelper.DOWN;//2 0x0010
// int left = ItemTouchHelper.LEFT;
// int right = ItemTouchHelper.RIGHT;
//要监听的拖拽方向,不监听为0
int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
//要监听的侧滑方向,不监听为0
// int swipeFlags = 0;
int swipeFlags = ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
int flags = makeMovementFlags(dragFlags, swipeFlags);
return flags;//即监听向上也监听向下
}
//是否允许长按拖拽
@Override
public boolean isLongPressDragEnabled() {
return true;
}
//移动的时候回调的方法(拖拽等)
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
if (viewHolder.getItemViewType() != target.getItemViewType()) {
return false;
}
//在拖拽的过程中不断地调用adapter.notifyItemMoved(from,to)
mMoveCallback.onItemMove(view