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 af39dddb0..3d1e1279b 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 @@ -221,6 +221,8 @@ public interface OnRecyclerViewItemLongClickListener { private OnRecyclerViewItemChildClickListener mChildClickListener; + private OnRecyclerViewItemChildLongClickListener mChildLongClickListener; + /** * Register a callback to be invoked when childView in this AdapterView has * been clicked and held @@ -246,6 +248,35 @@ public void onClick(View v) { } } + /** + * Register a callback to be invoked when childView in this AdapterView has + * been longClicked and held + * {@link OnRecyclerViewItemChildLongClickListener} + * + * @param childLongClickListener The callback that will run + */ + public void setOnRecyclerViewItemChildLongClickListener(OnRecyclerViewItemChildLongClickListener childLongClickListener) { + this.mChildLongClickListener = childLongClickListener; + } + + /** + * Interface for ItemChildLongClick + */ + public interface OnRecyclerViewItemChildLongClickListener { + boolean onItemChildLongClick(BaseQuickAdapter adapter, View view, int position); + } + + public class OnItemChildLongClickListener implements View.OnLongClickListener { + public RecyclerView.ViewHolder mViewHolder; + @Override + public boolean onLongClick(View v) { + if (mChildLongClickListener != null) { + return mChildLongClickListener.onItemChildLongClick(BaseQuickAdapter.this, v, mViewHolder.getLayoutPosition() - getHeaderViewsCount()); + } + return false; + } + } + /** * Same as QuickAdapter#QuickAdapter(Context,int) but with diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseViewHolder.java b/library/src/main/java/com/chad/library/adapter/base/BaseViewHolder.java index 24e2c26f6..fb421828e 100755 --- a/library/src/main/java/com/chad/library/adapter/base/BaseViewHolder.java +++ b/library/src/main/java/com/chad/library/adapter/base/BaseViewHolder.java @@ -292,6 +292,19 @@ public BaseViewHolder setOnClickListener(int viewId, BaseQuickAdapter.OnItemChil return this; } + /** + * Sets the on longClick listener of the view. + * @param viewId + * @param listener + * @return + */ + public BaseViewHolder setOnLongClickListener(int viewId, BaseQuickAdapter.OnItemChildLongClickListener listener) { + View view = getView(viewId); + listener.mViewHolder = this; + view.setOnLongClickListener(listener); + return this; + } + /** * Sets the on touch listener of the view. *