Skip to content

Instantly share code, notes, and snippets.

@fabiorecife
Created March 27, 2019 16:49
Show Gist options
  • Select an option

  • Save fabiorecife/f7608a40c5cfb8cc3545e95eaf06fe92 to your computer and use it in GitHub Desktop.

Select an option

Save fabiorecife/f7608a40c5cfb8cc3545e95eaf06fe92 to your computer and use it in GitHub Desktop.
RecyclerItemClickListener example
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