Created
March 27, 2019 16:49
-
-
Save fabiorecife/f7608a40c5cfb8cc3545e95eaf06fe92 to your computer and use it in GitHub Desktop.
RecyclerItemClickListener example
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 br.recife.fabio.myrecyclerviewapp; | |
| import android.content.Context; | |
| import android.support.annotation.NonNull; | |
| import android.support.v7.widget.RecyclerView; | |
| import android.view.GestureDetector; | |
| import android.view.MotionEvent; | |
| import android.view.View; | |
| import android.widget.AdapterView; | |
| //https://stackoverflow.com/questions/41200876/how-to-set-onitemclicklistener-for-recyclerview | |
| //https://raw.githubusercontent.com/jamiltondamasceno/RecyclerItemClickListener/master/RecyclerItemClickListener.java | |
| public class MyRecyckerItemClickListener implements RecyclerView.OnItemTouchListener { | |
| private OnItemClickListener listenerClick; | |
| private GestureDetector gestureDetector; | |
| public interface OnItemClickListener extends AdapterView.OnItemClickListener { | |
| public void onItemClick(View view, int position); | |
| public void onLongItemClick(View view, int position); | |
| } | |
| public MyRecyckerItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) { | |
| listenerClick = listener; | |
| gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { | |
| @Override | |
| public boolean onSingleTapUp(MotionEvent e) { | |
| return true; | |
| } | |
| @Override | |
| public void onLongPress(MotionEvent e) { | |
| View child = recyclerView.findChildViewUnder(e.getX(), e.getY()); | |
| if (child != null && listenerClick != null) { | |
| listenerClick.onLongItemClick(child, recyclerView.getChildAdapterPosition(child)); | |
| } | |
| } | |
| }); | |
| } | |
| @Override | |
| public boolean onInterceptTouchEvent(@NonNull RecyclerView recyclerView, @NonNull MotionEvent motionEvent) { | |
| View childView = recyclerView.findChildViewUnder(motionEvent.getX(), motionEvent.getY()); | |
| if (childView != null && listenerClick != null && gestureDetector.onTouchEvent(motionEvent)) { | |
| listenerClick.onItemClick(childView, recyclerView.getChildAdapterPosition(childView)); | |
| return true; | |
| } | |
| return false; | |
| } | |
| @Override | |
| public void onTouchEvent(@NonNull RecyclerView recyclerView, @NonNull MotionEvent motionEvent) { | |
| } | |
| @Override | |
| public void onRequestDisallowInterceptTouchEvent(boolean b) { | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment