//为RecycleView绑定触摸事件 ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.Callback() { @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { //首先回调的方法 返回int表示是否监听该方向 int dragFlags = ItemTouchHelper.UP|ItemTouchHelper.DOWN;//拖拽 int swipeFlags = ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT;//侧滑删除 return makeMovementFlags(dragFlags,swipeFlags); } @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { //滑动事件 Collections.swap(list,viewHolder.getAdapterPosition(),target.getAdapterPosition()); adapter.notifyItemMoved(viewHolder.getAdapterPosition(),target.getAdapterPosition()); return false; } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { //侧滑事件 list.remove(viewHolder.getAdapterPosition()); adapter.notifyItemRemoved(viewHolder.getAdapterPosition()); } @Override public boolean isLongPressDragEnabled() { //是否可拖拽 return true; } }); helper.attachToRecyclerView(rv);
int |
ACTION_STATE_DRAG 目前拖。 |
int |
ACTION_STATE_IDLE ItemTouchHelper处于闲置状态。 |
int |
ACTION_STATE_SWIPE 目前刷卡。 |
int |
ANIMATION_TYPE_DRAG 动画类型视图拖现在将动画最后的位置。 |
int |
ANIMATION_TYPE_SWIPE_CANCEL 动画类型的观点不完全刷卡从而将动画回到他们 原来的位置。 |
int |
ANIMATION_TYPE_SWIPE_SUCCESS 刷卡成功的动画类型的观点。 |
int |
DOWN 方向,用来刷&拖动控制。 |
int |
END 水平方向。 |
int |
LEFT 离开的方向,用来刷&拖动控制。 |
int |
RIGHT 正确的方向,用来刷&拖动控制。 |
int |
START 水平方向开始。 |
int |
UP 方向,用于刷卡&拖动控制。 |