Created
May 7, 2017 16:19
-
-
Save andersonkxiass/a573b743420d64b7707bf7d6b0941443 to your computer and use it in GitHub Desktop.
This file contains 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
public class RecyclerViewWithClick extends RecyclerView { | |
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 = getChildViewHolder(v); | |
mOnItemClickListener.onItemClicked(RecyclerViewWithClick.this, holder.getAdapterPosition(), v); | |
} | |
} | |
}; | |
private View.OnLongClickListener mOnLongClickListener = new View.OnLongClickListener() { | |
@Override | |
public boolean onLongClick(View v) { | |
if (mOnItemLongClickListener != null) { | |
RecyclerView.ViewHolder holder = getChildViewHolder(v); | |
return mOnItemLongClickListener.onItemLongClicked(RecyclerViewWithClick.this, 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) {} | |
}; | |
public RecyclerViewWithClick(Context context) { | |
super(context); | |
init(); | |
} | |
public RecyclerViewWithClick(Context context, @Nullable AttributeSet attrs) { | |
super(context, attrs); | |
init(); | |
} | |
private void init() { | |
setTag(R.id.item_click_support, this); | |
addOnChildAttachStateChangeListener(mAttachListener); | |
} | |
public void setOnItemClickListener(OnItemClickListener listener) { | |
mOnItemClickListener = listener; | |
} | |
public void setOnItemLongClickListener(OnItemLongClickListener listener) { | |
mOnItemLongClickListener = listener; | |
} | |
public interface OnItemClickListener { | |
void onItemClicked(RecyclerViewWithClick recyclerView, int position, View v); | |
} | |
public interface OnItemLongClickListener { | |
boolean onItemLongClicked(RecyclerViewWithClick recyclerView, int position, View v); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment