]> git.ktnx.net Git - mobile-ledger.git/blob - app/src/main/java/net/ktnx/mobileledger/RecyclerItemListener.java
df65bb503161d58e0618df5be74491d5f9a1ad65
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / RecyclerItemListener.java
1 package net.ktnx.mobileledger;
2
3 import android.content.Context;
4 import android.support.annotation.NonNull;
5 import android.support.v7.widget.RecyclerView;
6 import android.support.v7.widget.RecyclerView.OnItemTouchListener;
7 import android.view.GestureDetector;
8 import android.view.MotionEvent;
9 import android.view.View;
10
11 class RecyclerItemListener implements OnItemTouchListener {
12     private RecyclerTouchListener listener;
13     private GestureDetector gd;
14
15     interface RecyclerTouchListener {
16         void onClickItem(View v, int position);
17         void onLongClickItem(View v, int position);
18     }
19
20     public RecyclerItemListener(Context ctx, RecyclerView rv, RecyclerTouchListener listener) {
21         this.listener = listener;
22         this.gd = new GestureDetector(
23                 ctx, new GestureDetector.SimpleOnGestureListener() {
24             @Override
25             public void onLongPress(MotionEvent e) {
26                 View v = rv.findChildViewUnder(e.getX(), e.getY());
27                 listener.onLongClickItem(v, rv.getChildAdapterPosition(v));
28             }
29
30             @Override
31             public boolean onSingleTapUp(MotionEvent e) {
32                 View v = rv.findChildViewUnder(e.getX(), e.getY());
33                 listener.onClickItem(v, rv.getChildAdapterPosition(v));
34                 return true;
35             }
36         }
37         );
38     }
39
40     @Override
41     public boolean onInterceptTouchEvent(@NonNull RecyclerView recyclerView,
42                                          @NonNull MotionEvent motionEvent) {
43         View v = recyclerView.findChildViewUnder(motionEvent.getX(), motionEvent.getY());
44         return (v != null) && gd.onTouchEvent(motionEvent);
45     }
46
47     @Override
48     public void onTouchEvent(@NonNull RecyclerView recyclerView, @NonNull MotionEvent motionEvent) {
49
50     }
51
52     @Override
53     public void onRequestDisallowInterceptTouchEvent(boolean b) {
54
55     }
56 }