Skip to content

Commit

Permalink
Merge pull request #162 from elfman/master
Browse files Browse the repository at this point in the history
The views create by adapter can not be swiped
  • Loading branch information
CymChad authored Jul 14, 2016
2 parents f4086b7 + 0b9fbf3 commit 757015a
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@
import android.graphics.Paint;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.widget.CardView;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;

import com.chad.baserecyclerviewadapterhelper.adapter.ItemDragAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
Expand Down Expand Up @@ -107,6 +110,8 @@ public void onItemSwipeMoving(Canvas canvas, RecyclerView.ViewHolder viewHolder,
mAdapter.enableDragItem(mItemTouchHelper);
mAdapter.setOnItemDragListener(listener);

mAdapter.addHeaderView(getView());
mAdapter.addFooterView(getView());
mRecyclerView.setAdapter(mAdapter);
}

Expand All @@ -118,4 +123,11 @@ private List<String> generateData(int size) {
return data;
}

private View getView() {
View view = getLayoutInflater().inflate(R.layout.head_view, null);
view.findViewById(R.id.tv).setVisibility(View.GONE);
view.setLayoutParams(new DrawerLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
return view;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,10 @@ public abstract class BaseQuickAdapter<T> extends RecyclerView.Adapter<RecyclerV
protected int mLayoutResId;
protected LayoutInflater mLayoutInflater;
protected List<T> mData;
protected static final int HEADER_VIEW = 0x00000111;
protected static final int LOADING_VIEW = 0x00000222;
protected static final int FOOTER_VIEW = 0x00000333;
protected static final int EMPTY_VIEW = 0x00000555;
public static final int HEADER_VIEW = 0x00000111;
public static final int LOADING_VIEW = 0x00000222;
public static final int FOOTER_VIEW = 0x00000333;
public static final int EMPTY_VIEW = 0x00000555;
private View mLoadingView;

@IntDef({ALPHAIN, SCALEIN, SLIDEIN_BOTTOM, SLIDEIN_LEFT, SLIDEIN_RIGHT})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,12 @@ public boolean isItemViewSwipeEnabled() {

@Override
public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
if (actionState == ItemTouchHelper.ACTION_STATE_DRAG) {
if (actionState == ItemTouchHelper.ACTION_STATE_DRAG
&& !isViewCreateByAdapter(viewHolder)) {
mAdapter.onItemDragStart(viewHolder);
viewHolder.itemView.setTag(R.id.BaseQuickAdapter_dragging_support, true);
} else if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
} else if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE
&& !isViewCreateByAdapter(viewHolder)) {
mAdapter.onItemSwipeStart(viewHolder);
viewHolder.itemView.setTag(R.id.BaseQuickAdapter_swiping_support, true);
}
Expand All @@ -52,6 +54,9 @@ public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionStat
@Override
public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
super.clearView(recyclerView, viewHolder);
if (isViewCreateByAdapter(viewHolder)) {
return;
}

if (viewHolder.itemView.getTag(R.id.BaseQuickAdapter_dragging_support) != null
&& (Boolean)viewHolder.itemView.getTag(R.id.BaseQuickAdapter_dragging_support)) {
Expand All @@ -67,6 +72,10 @@ public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHol

@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
if (isViewCreateByAdapter(viewHolder)) {
return makeMovementFlags(0, 0);
}

return makeMovementFlags(mDragMoveFlags, mSwipeMoveFlags);
}

Expand All @@ -86,7 +95,9 @@ public void onMoved(RecyclerView recyclerView, RecyclerView.ViewHolder source, i

@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
mAdapter.onItemSwiped(viewHolder);
if (!isViewCreateByAdapter(viewHolder)) {
mAdapter.onItemSwiped(viewHolder);
}
}

@Override
Expand Down Expand Up @@ -147,18 +158,22 @@ public void setSwipeMoveFlags(int swipeMoveFlags) {
}

@Override
public void onChildDrawOver(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
public void onChildDrawOver(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
float dX, float dY, int actionState, boolean isCurrentlyActive) {
super.onChildDrawOver(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);

if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE
&& !isViewCreateByAdapter(viewHolder)) {
View itemView = viewHolder.itemView;

c.save();
if (dX > 0) {
c.clipRect(itemView.getLeft(), itemView.getTop(), itemView.getLeft() + dX, itemView.getBottom());
c.clipRect(itemView.getLeft(), itemView.getTop(),
itemView.getLeft() + dX, itemView.getBottom());
c.translate(itemView.getLeft(), itemView.getTop());
} else {
c.clipRect(itemView.getRight() + dX, itemView.getTop(), itemView.getRight(), itemView.getBottom());
c.clipRect(itemView.getRight() + dX, itemView.getTop(),
itemView.getRight(), itemView.getBottom());
c.translate(itemView.getRight() + dX, itemView.getTop());
}

Expand All @@ -167,4 +182,14 @@ public void onChildDrawOver(Canvas c, RecyclerView recyclerView, RecyclerView.Vi

}
}

private boolean isViewCreateByAdapter(RecyclerView.ViewHolder viewHolder) {
int type = viewHolder.getItemViewType();
if (type == mAdapter.HEADER_VIEW || type == mAdapter.LOADING_VIEW
|| type == mAdapter.FOOTER_VIEW || type == mAdapter.EMPTY_VIEW) {
return true;
}
return false;

}
}

0 comments on commit 757015a

Please sign in to comment.