package name.caiyao.microreader.ui.helper; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; import android.support.v7.widget.helper.ItemTouchHelper; /** * Created by 蔡小木 on 2016/4/28 0028. */ public class ItemDragHelperCallback extends ItemTouchHelper.Callback { @Override public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { int dragFlags; RecyclerView.LayoutManager manager = recyclerView.getLayoutManager(); if (manager instanceof GridLayoutManager || manager instanceof StaggeredGridLayoutManager) { dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT; } else { dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN; } // 如果想支持滑动(删除)操作, swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END int swipeFlags = 0; return makeMovementFlags(dragFlags, swipeFlags); } @Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { // 不同Type之间不可移动 if (viewHolder.getItemViewType() != target.getItemViewType()) { // return false; } if (recyclerView.getAdapter() instanceof OnItemMoveListener) { OnItemMoveListener listener = ((OnItemMoveListener) recyclerView.getAdapter()); listener.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition()); } return true; } @Override public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { } @Override public boolean isLongPressDragEnabled() { // 不支持长按拖拽功能 手动控制 return false; } @Override public boolean isItemViewSwipeEnabled() { // 不支持滑动功能 return false; } }