Created
April 3, 2018 20:25
-
-
Save ebnrdwan/00791b83072c40d1a424fb810c9ea576 to your computer and use it in GitHub Desktop.
ItemClickForRecyclerView
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package ebnrdwan.io.parentalApp.Utilities; | |
import android.support.v7.widget.RecyclerView; | |
import android.view.View; | |
import ebnrdwan.io.parentalApp.R; | |
/** | |
* Created by ascom on 17/04/2016. | |
*/ | |
public class ItemclickforRecycler { | |
private final RecyclerView mRecyclerView; | |
private OnItemClickListener mOnItemClickListener; | |
private OnItemLongClickListener mOnItemLongClickListener; | |
private View.OnClickListener mOnClickListener = new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
if (mOnItemClickListener != null) { | |
RecyclerView.ViewHolder holder = mRecyclerView.getChildViewHolder(v); | |
mOnItemClickListener.onItemClicked(mRecyclerView, holder.getAdapterPosition(), v); | |
} | |
} | |
}; | |
private View.OnLongClickListener mOnLongClickListener = new View.OnLongClickListener() { | |
@Override | |
public boolean onLongClick(View v) { | |
if (mOnItemLongClickListener != null) { | |
RecyclerView.ViewHolder holder = mRecyclerView.getChildViewHolder(v); | |
return mOnItemLongClickListener.onItemLongClicked(mRecyclerView, holder.getAdapterPosition(), v); | |
} | |
return false; | |
} | |
}; | |
private RecyclerView.OnChildAttachStateChangeListener mAttachListener | |
= new RecyclerView.OnChildAttachStateChangeListener() { | |
@Override | |
public void onChildViewAttachedToWindow(View view) { | |
if (mOnItemClickListener != null) { | |
view.setOnClickListener(mOnClickListener); | |
} | |
if (mOnItemLongClickListener != null) { | |
view.setOnLongClickListener(mOnLongClickListener); | |
} | |
} | |
@Override | |
public void onChildViewDetachedFromWindow(View view) { | |
} | |
}; | |
private ItemclickforRecycler(RecyclerView recyclerView) { | |
mRecyclerView = recyclerView; | |
mRecyclerView.setTag(R.id.item_click_support, this); | |
mRecyclerView.addOnChildAttachStateChangeListener(mAttachListener); | |
} | |
public static ItemclickforRecycler addTo(RecyclerView view) { | |
ItemclickforRecycler support = (ItemclickforRecycler) view.getTag(R.id.item_click_support); | |
if (support == null) { | |
support = new ItemclickforRecycler(view); | |
} | |
return support; | |
} | |
public static ItemclickforRecycler removeFrom(RecyclerView view) { | |
ItemclickforRecycler support = (ItemclickforRecycler) view.getTag(R.id.item_click_support); | |
if (support != null) { | |
support.detach(view); | |
} | |
return support; | |
} | |
public ItemclickforRecycler setOnItemClickListener(OnItemClickListener listener) { | |
mOnItemClickListener = listener; | |
return this; | |
} | |
public ItemclickforRecycler setOnItemLongClickListener(OnItemLongClickListener listener) { | |
mOnItemLongClickListener = listener; | |
return this; | |
} | |
private void detach(RecyclerView view) { | |
view.removeOnChildAttachStateChangeListener(mAttachListener); | |
view.setTag(R.id.item_click_support, null); | |
} | |
public interface OnItemClickListener { | |
void onItemClicked(RecyclerView recyclerView, int position, View v); | |
} | |
public interface OnItemLongClickListener { | |
boolean onItemLongClicked(RecyclerView recyclerView, int position, View v); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment