diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java index 02291e1d3..e20361384 100755 --- a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java @@ -74,6 +74,7 @@ public abstract class BaseQuickAdapter extends Recy private LoadMoreView mLoadMoreView = new SimpleLoadMoreView(); private RequestLoadMoreListener mRequestLoadMoreListener; private boolean mEnableLoadMoreEndClick = false; + private List mViewHolders; //Animation /** @@ -476,6 +477,7 @@ public BaseQuickAdapter(@LayoutRes int layoutResId, @Nullable List data) { if (layoutResId != 0) { this.mLayoutResId = layoutResId; } + mViewHolders = new ArrayList<>(); } public BaseQuickAdapter(@Nullable List data) { @@ -780,6 +782,7 @@ public K onCreateViewHolder(ViewGroup parent, int viewType) { default: baseViewHolder = onCreateDefViewHolder(parent, viewType); bindViewClickListener(baseViewHolder); + mViewHolders.add(baseViewHolder); } baseViewHolder.setAdapter(this); return baseViewHolder; @@ -967,7 +970,9 @@ private void bindViewClickListener(final BaseViewHolder baseViewHolder) { view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - setOnItemClick(v, baseViewHolder.getLayoutPosition() - getHeaderLayoutCount()); + if (getOnItemClickListener() != null) { + setOnItemClick(v, baseViewHolder.getLayoutPosition() - getHeaderLayoutCount()); + } } }); } @@ -975,7 +980,9 @@ public void onClick(View v) { view.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { - return setOnItemLongClick(v, baseViewHolder.getLayoutPosition() - getHeaderLayoutCount()); + if (getOnItemLongClickListener() != null) + return setOnItemLongClick(v, baseViewHolder.getLayoutPosition() - getHeaderLayoutCount()); + return false; } }); } @@ -1152,7 +1159,7 @@ public int addHeaderView(View header, int index) { * @param index * @param orientation */ - public int addHeaderView(View header,final int index, int orientation) { + public int addHeaderView(View header, final int index, int orientation) { if (mHeaderLayout == null) { mHeaderLayout = new LinearLayout(header.getContext()); if (orientation == LinearLayout.VERTICAL) { @@ -1164,7 +1171,7 @@ public int addHeaderView(View header,final int index, int orientation) { } } final int childCount = mHeaderLayout.getChildCount(); - int mIndex =index; + int mIndex = index; if (index < 0 || index > childCount) { mIndex = childCount; } @@ -1930,6 +1937,7 @@ public int getParentPosition(@NonNull T item) { public interface OnItemChildClickListener { /** * callback method to be invoked when an itemchild in this view has been click + * * @param adapter * @param view The view whihin the ItemView that was clicked * @param position The position of the view int the adapter @@ -1946,6 +1954,7 @@ public interface OnItemChildLongClickListener { /** * callback method to be invoked when an item in this view has been * click and held + * * @param adapter this BaseQuickAdapter adapter * @param view The childView whihin the itemView that was clicked and held. * @param position The position of the view int the adapter @@ -1998,6 +2007,9 @@ public interface OnItemClickListener { */ public void setOnItemClickListener(@Nullable OnItemClickListener listener) { mOnItemClickListener = listener; + for (BaseViewHolder viewHolder : mViewHolders) { + bindViewClickListener(viewHolder); + } } /** @@ -2018,6 +2030,9 @@ public void setOnItemChildClickListener(OnItemChildClickListener listener) { */ public void setOnItemLongClickListener(OnItemLongClickListener listener) { mOnItemLongClickListener = listener; + for (BaseViewHolder viewHolder : mViewHolders) { + bindViewClickListener(viewHolder); + } } /**