package com.simplecity.amp_library.ui.recyclerview;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
public class ItemTouchHelperCallback extends ItemTouchHelper.Callback {
private int startPosition = -1;
private int endPosition = -1;
public interface OnItemMoveListener {
void onItemMove(int fromPosition, int toPosition);
}
public interface OnDropListener {
void onDrop(int fromPosition, int toPosition);
}
public interface OnClearListener {
void onClear();
}
private OnItemMoveListener mItemMoveListener;
private OnDropListener mOnDropListener;
@Nullable
private OnClearListener mOnClearListener;
public ItemTouchHelperCallback(OnItemMoveListener onMoveListener, OnDropListener onDropListener, @Nullable OnClearListener onClearListener) {
mItemMoveListener = onMoveListener;
mOnDropListener = onDropListener;
mOnClearListener = onClearListener;
}
@Override
public boolean isItemViewSwipeEnabled() {
return false;
}
@Override
public boolean isLongPressDragEnabled() {
return false;
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
if (startPosition == -1) {
startPosition = viewHolder.getAdapterPosition();
}
endPosition = target.getAdapterPosition();
mItemMoveListener.onItemMove(viewHolder.getAdapterPosition(), endPosition);
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
//Nothing endPosition do
}
@Override
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
super.clearView(recyclerView, viewHolder);
if (startPosition != -1 && endPosition != -1) {
mOnDropListener.onDrop(startPosition, endPosition);
}
startPosition = -1;
endPosition = -1;
if (mOnClearListener != null) {
mOnClearListener.onClear();
}
}
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
return makeMovementFlags(dragFlags, swipeFlags);
}
}