Skip to content

Commit

Permalink
Merge pull request #141 from elfman/master
Browse files Browse the repository at this point in the history
Solve bug in issue #140
  • Loading branch information
CymChad authored Jul 8, 2016
2 parents 59964bd + da00612 commit 2b140ee
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -611,15 +611,15 @@ public void onBindViewHolder(final RecyclerView.ViewHolder holder, int positions
if (mToggleViewId != NO_TOGGLE_VIEW) {
View toggleView = ((BaseViewHolder) holder).getView(mToggleViewId);
if (toggleView != null) {
toggleView.setTag(holder);
toggleView.setTag(R.id.BaseQuickAdapter_viewholder_support, holder);
if (mDragOnLongPress) {
toggleView.setOnLongClickListener(mOnToggleViewLongClickListener);
} else {
toggleView.setOnTouchListener(mOnToggleViewTouchListener);
}
}
} else {
holder.itemView.setTag(holder);
holder.itemView.setTag(R.id.BaseQuickAdapter_viewholder_support, holder);
holder.itemView.setOnLongClickListener(mOnToggleViewLongClickListener);
}
}
Expand Down Expand Up @@ -932,7 +932,7 @@ public void setToggleDragOnLongPress(boolean longPress) {
@Override
public boolean onLongClick(View v) {
if (mItemTouchHelper != null && itemDragEnabled) {
mItemTouchHelper.startDrag((RecyclerView.ViewHolder) v.getTag());
mItemTouchHelper.startDrag((RecyclerView.ViewHolder) v.getTag(R.id.BaseQuickAdapter_viewholder_support));
}
return true;
}
Expand All @@ -944,7 +944,7 @@ public boolean onTouch(View v, MotionEvent event) {
if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_DOWN
&& !mDragOnLongPress) {
if (mItemTouchHelper != null && itemDragEnabled) {
mItemTouchHelper.startDrag((RecyclerView.ViewHolder) v.getTag());
mItemTouchHelper.startDrag((RecyclerView.ViewHolder) v.getTag(R.id.BaseQuickAdapter_viewholder_support));
}
return true;
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import android.support.v7.widget.helper.ItemTouchHelper;
import android.view.View;

import com.chad.library.R;
import com.chad.library.adapter.base.BaseQuickAdapter;

/**
Expand All @@ -22,8 +23,6 @@ public class ItemDragAndSwipeCallback extends ItemTouchHelper.Callback {
int mDragMoveFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
int mSwipeMoveFlags = ItemTouchHelper.END;

int mActionState = ItemTouchHelper.ACTION_STATE_IDLE;

public ItemDragAndSwipeCallback(BaseQuickAdapter adapter) {
mAdapter = adapter;
}
Expand All @@ -42,10 +41,10 @@ public boolean isItemViewSwipeEnabled() {
public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
if (actionState == ItemTouchHelper.ACTION_STATE_DRAG) {
mAdapter.onItemDragStart(viewHolder);
mActionState = actionState;
viewHolder.itemView.setTag(R.id.BaseQuickAdapter_dragging_support, true);
} else if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
mAdapter.onItemSwipeStart(viewHolder);
mActionState = actionState;
viewHolder.itemView.setTag(R.id.BaseQuickAdapter_swiping_support, true);
}
super.onSelectedChanged(viewHolder, actionState);
}
Expand All @@ -54,12 +53,16 @@ public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionStat
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
super.clearView(recyclerView, viewHolder);

if (mActionState == ItemTouchHelper.ACTION_STATE_DRAG) {
if (viewHolder.itemView.getTag(R.id.BaseQuickAdapter_dragging_support) != null
&& (Boolean)viewHolder.itemView.getTag(R.id.BaseQuickAdapter_dragging_support)) {
mAdapter.onItemDragEnd(viewHolder);
} else if (mActionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
viewHolder.itemView.setTag(R.id.BaseQuickAdapter_dragging_support, false);
}
if (viewHolder.itemView.getTag(R.id.BaseQuickAdapter_swiping_support) != null
&& (Boolean)viewHolder.itemView.getTag(R.id.BaseQuickAdapter_swiping_support)) {
mAdapter.onItemSwipeClear(viewHolder);
viewHolder.itemView.setTag(R.id.BaseQuickAdapter_swiping_support, false);
}
mActionState = ItemTouchHelper.ACTION_STATE_IDLE;
}

@Override
Expand Down
6 changes: 6 additions & 0 deletions library/src/main/res/values/ids.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="BaseQuickAdapter_viewholder_support" type="id"/>
<item name="BaseQuickAdapter_swiping_support" type="id"/>
<item name="BaseQuickAdapter_dragging_support" type="id"/>
</resources>

0 comments on commit 2b140ee

Please sign in to comment.