Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. package com.cjtp.android.utils;
  2.  
  3. import android.content.Context;
  4. import android.support.v7.widget.RecyclerView;
  5. import android.view.GestureDetector;
  6. import android.view.MotionEvent;
  7. import android.view.View;
  8.  
  9.  
  10. /**
  11. * Created by Carlos Torres Pensa on 25/6/2017.
  12. */
  13.  
  14. /** Permite implementar onClickListener y LongClickListener en un Recycler View **/
  15.  
  16. public class MyRecyclerMultiListener implements RecyclerView.OnItemTouchListener {
  17.  
  18. private RecyclerListeners recyclerListeners;
  19. private GestureDetector gestureDetector;
  20.  
  21. public MyRecyclerMultiListener(Context context, final RecyclerView recycleView, final RecyclerListeners recyclerListeners) {
  22.  
  23. this.recyclerListeners = recyclerListeners;
  24. gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
  25. @Override
  26. public boolean onSingleTapUp(MotionEvent e) {
  27. return true;
  28. }
  29.  
  30. @Override
  31. public void onLongPress(MotionEvent e) {
  32. View child = recycleView.findChildViewUnder(e.getX(), e.getY());
  33. if (child != null && recyclerListeners != null) {
  34. recyclerListeners.onRecyclerItemLongClick(child, recycleView.getChildAdapterPosition(child));
  35. }
  36. }
  37. });
  38. }
  39.  
  40.  
  41. //----------------------------------------------------------------------------------------------
  42.  
  43. @Override
  44. public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
  45. View child=rv.findChildViewUnder(e.getX(),e.getY());
  46. if(child!=null && recyclerListeners !=null && gestureDetector.onTouchEvent(e)){
  47. recyclerListeners.onRecyclerItemClick(child,rv.getChildAdapterPosition(child));
  48. }
  49.  
  50. return false;
  51. }
  52.  
  53. @Override
  54. public void onTouchEvent(RecyclerView rv, MotionEvent e) {
  55.  
  56. }
  57.  
  58. @Override
  59. public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
  60.  
  61. }
  62.  
  63. //----------------------------------------------------------------------------------------------
  64. public interface RecyclerListeners {
  65. public void onRecyclerItemClick(View view,int position);
  66. public void onRecyclerItemLongClick(View view, int position);
  67. }
  68.  
  69. /********************USO ********************/
  70. /** En el fragment implementar MyRecyclerMultiListener.RecyclerListeners
  71. *
  72. * Settear el listener de esta forma:
  73. * recyclerView.addOnItemTouchListener(new MyRecyclerMultiListener(getContext(), recyclerView,this));
  74. *
  75. * Implementar los métodos onRecyclerItemClick y onRecyclerItemLongClick
  76. */
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement