package com.bigfat.itemtouchhelperdemo; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; public class ItemTouchHelperCallback extends ItemTouchHelper.Callback { private final ItemTouchHelperAdapter mItemTouchHelperAdapter; private int mDraggedPosition; private int mTargetPosition; ItemTouchHelperCallback(ItemTouchHelperAdapter itemTouchHelperAdapter) { mItemTouchHelperAdapter = itemTouchHelperAdapter; } @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT; return makeMovementFlags(dragFlags, 0); } @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { mDraggedPosition = viewHolder.getAdapterPosition(); mTargetPosition = target.getAdapterPosition(); // mItemTouchHelperAdapter.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition()); return false; } @Override public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) { super.onSelectedChanged(viewHolder, actionState); switch (actionState) { case ItemTouchHelper.ACTION_STATE_DRAG: mItemTouchHelperAdapter.onDragStarted(); break; case ItemTouchHelper.ACTION_STATE_IDLE: mItemTouchHelperAdapter.onItemMove(mDraggedPosition, mTargetPosition); // mItemTouchHelperAdapter.onDragEnded(); break; } } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { mItemTouchHelperAdapter.onItemDismiss(viewHolder.getAdapterPosition()); } @Override public boolean isLongPressDragEnabled() { return true; } @Override public boolean isItemViewSwipeEnabled() { return true; } }