Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.28 KB | None | 0 0
  1. package com.example.dotacreep;
  2.  
  3. import android.support.annotation.NonNull;
  4. import android.support.v7.widget.RecyclerView;
  5. import android.view.View;
  6.  
  7. public class ItemClickSupport {
  8.     private final RecyclerView mRecyclerView;
  9.     private OnItemClickListener mOnItemClickListener;
  10.     private OnItemLongClickListener mOnItemLongClickListener;
  11.     private View.OnClickListener mOnClickListener = new View.OnClickListener() {
  12.         @Override
  13.         public void onClick(View v) {
  14.             if (mOnItemClickListener != null) {
  15.                 RecyclerView.ViewHolder holder = mRecyclerView.getChildViewHolder(v);
  16.                 mOnItemClickListener.onItemClicked(mRecyclerView, holder.getAdapterPosition(), v);
  17.             }
  18.         }
  19.     };
  20.     private View.OnLongClickListener mOnLongClickListener = new View.OnLongClickListener() {
  21.         @Override
  22.         public boolean onLongClick(View v) {
  23.             if (mOnItemLongClickListener != null) {
  24.                 RecyclerView.ViewHolder holder = mRecyclerView.getChildViewHolder(v);
  25.                 return mOnItemLongClickListener.onItemLongClicked(mRecyclerView, holder.getAdapterPosition(), v);
  26.             }
  27.             return false;
  28.         }
  29.     };
  30.     private RecyclerView.OnChildAttachStateChangeListener mAttachListener
  31.             = new RecyclerView.OnChildAttachStateChangeListener() {
  32.         @Override
  33.         public void onChildViewAttachedToWindow(@NonNull View view) {
  34.             if (mOnItemClickListener != null) {
  35.                 view.setOnClickListener(mOnClickListener);
  36.             }
  37.             if (mOnItemLongClickListener != null) {
  38.                 view.setOnLongClickListener(mOnLongClickListener);
  39.             }
  40.         }
  41.         @Override
  42.         public void onChildViewDetachedFromWindow(@NonNull View view) {
  43.         }
  44.     };
  45.     private ItemClickSupport(RecyclerView recyclerView) {
  46.         mRecyclerView = recyclerView;
  47.         mRecyclerView.setTag(R.id.item_click_support, this);
  48.         mRecyclerView.addOnChildAttachStateChangeListener(mAttachListener);
  49.     }
  50.     public static ItemClickSupport addTo(RecyclerView view) {
  51.         ItemClickSupport support = (ItemClickSupport) view.getTag(R.id.item_click_support);
  52.         if (support == null) {
  53.             support = new ItemClickSupport(view);
  54.         }
  55.         return support;
  56.     }
  57.     public static ItemClickSupport removeFrom(RecyclerView view) {
  58.         ItemClickSupport support = (ItemClickSupport) view.getTag(R.id.item_click_support);
  59.         if (support != null) {
  60.             support.detach(view);
  61.         }
  62.         return support;
  63.     }
  64.     public void setOnItemClickListener(OnItemClickListener listener) {
  65.         mOnItemClickListener = listener;
  66.     }
  67.     public void setOnItemLongClickListener(OnItemLongClickListener listener) {
  68.         mOnItemLongClickListener = listener;
  69.     }
  70.     private void detach(RecyclerView view) {
  71.         view.removeOnChildAttachStateChangeListener(mAttachListener);
  72.         view.setTag(R.id.item_click_support, null);
  73.     }
  74.     public interface OnItemClickListener {
  75.         void onItemClicked(RecyclerView recyclerView, int position, View v);
  76.     }
  77.     public interface OnItemLongClickListener {
  78.         boolean onItemLongClicked(RecyclerView recyclerView, int position, View v);
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement