Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.cjtp.android.utils;
- import android.content.Context;
- import android.support.v7.widget.RecyclerView;
- import android.view.GestureDetector;
- import android.view.MotionEvent;
- import android.view.View;
- /**
- * Created by Carlos Torres Pensa on 25/6/2017.
- */
- /** Permite implementar onClickListener y LongClickListener en un Recycler View **/
- public class MyRecyclerMultiListener implements RecyclerView.OnItemTouchListener {
- private RecyclerListeners recyclerListeners;
- private GestureDetector gestureDetector;
- public MyRecyclerMultiListener(Context context, final RecyclerView recycleView, final RecyclerListeners recyclerListeners) {
- this.recyclerListeners = recyclerListeners;
- gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
- @Override
- public boolean onSingleTapUp(MotionEvent e) {
- return true;
- }
- @Override
- public void onLongPress(MotionEvent e) {
- View child = recycleView.findChildViewUnder(e.getX(), e.getY());
- if (child != null && recyclerListeners != null) {
- recyclerListeners.onRecyclerItemLongClick(child, recycleView.getChildAdapterPosition(child));
- }
- }
- });
- }
- //----------------------------------------------------------------------------------------------
- @Override
- public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
- View child=rv.findChildViewUnder(e.getX(),e.getY());
- if(child!=null && recyclerListeners !=null && gestureDetector.onTouchEvent(e)){
- recyclerListeners.onRecyclerItemClick(child,rv.getChildAdapterPosition(child));
- }
- return false;
- }
- @Override
- public void onTouchEvent(RecyclerView rv, MotionEvent e) {
- }
- @Override
- public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
- }
- //----------------------------------------------------------------------------------------------
- public interface RecyclerListeners {
- public void onRecyclerItemClick(View view,int position);
- public void onRecyclerItemLongClick(View view, int position);
- }
- /********************USO ********************/
- /** En el fragment implementar MyRecyclerMultiListener.RecyclerListeners
- *
- * Settear el listener de esta forma:
- * recyclerView.addOnItemTouchListener(new MyRecyclerMultiListener(getContext(), recyclerView,this));
- *
- * Implementar los métodos onRecyclerItemClick y onRecyclerItemLongClick
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement