package com.loopeer.test.itemtouchhelperextension;
import android.graphics.Canvas;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import com.loopeer.itemtouchhelperextension.ItemTouchHelperExtension;
public class ItemTouchHelperCallback extends ItemTouchHelperExtension.Callback {
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
if (viewHolder instanceof MainRecyclerAdapter.ItemNoSwipeViewHolder) {
return 0;
}
return makeMovementFlags(ItemTouchHelper.UP|ItemTouchHelper.DOWN, ItemTouchHelper.START);
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
MainRecyclerAdapter adapter = (MainRecyclerAdapter) recyclerView.getAdapter();
adapter.move(viewHolder.getAdapterPosition(), target.getAdapterPosition());
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
}
@Override
public boolean isLongPressDragEnabled() {
return true;
}
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
if (dY != 0 && dX == 0) super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
MainRecyclerAdapter.ItemBaseViewHolder holder = (MainRecyclerAdapter.ItemBaseViewHolder) viewHolder;
if (viewHolder instanceof MainRecyclerAdapter.ItemSwipeWithActionWidthNoSpringViewHolder) {
if (dX < -holder.mActionContainer.getWidth()) {
dX = -holder.mActionContainer.getWidth();
}
holder.mViewContent.setTranslationX(dX);
return;
}
if (viewHolder instanceof MainRecyclerAdapter.ItemBaseViewHolder)
holder.mViewContent.setTranslationX(dX);
}
}