Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.dotacreep;
- import android.support.annotation.NonNull;
- import android.support.v7.widget.RecyclerView;
- import android.view.View;
- public class ItemClickSupport {
- 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(@NonNull View view) {
- if (mOnItemClickListener != null) {
- view.setOnClickListener(mOnClickListener);
- }
- if (mOnItemLongClickListener != null) {
- view.setOnLongClickListener(mOnLongClickListener);
- }
- }
- @Override
- public void onChildViewDetachedFromWindow(@NonNull View view) {
- }
- };
- private ItemClickSupport(RecyclerView recyclerView) {
- mRecyclerView = recyclerView;
- mRecyclerView.setTag(R.id.item_click_support, this);
- mRecyclerView.addOnChildAttachStateChangeListener(mAttachListener);
- }
- public static ItemClickSupport addTo(RecyclerView view) {
- ItemClickSupport support = (ItemClickSupport) view.getTag(R.id.item_click_support);
- if (support == null) {
- support = new ItemClickSupport(view);
- }
- return support;
- }
- public static ItemClickSupport removeFrom(RecyclerView view) {
- ItemClickSupport support = (ItemClickSupport) view.getTag(R.id.item_click_support);
- if (support != null) {
- support.detach(view);
- }
- return support;
- }
- public void setOnItemClickListener(OnItemClickListener listener) {
- mOnItemClickListener = listener;
- }
- public void setOnItemLongClickListener(OnItemLongClickListener listener) {
- mOnItemLongClickListener = listener;
- }
- 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);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement