You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2016/06/08 16:02:12 UTC

[10/40] incubator-taverna-mobile git commit: RecyclerView item click helper class

RecyclerView item click helper class


Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/commit/704137b7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/tree/704137b7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/diff/704137b7

Branch: refs/heads/master
Commit: 704137b751a73ca6b65f35f0b134567ee0a91f5a
Parents: 40085c5
Author: Sagar <ku...@gmail.com>
Authored: Fri May 6 16:55:15 2016 +0530
Committer: Sagar <ku...@gmail.com>
Committed: Fri May 6 16:55:15 2016 +0530

----------------------------------------------------------------------
 .../ui/adapter/RecyclerItemClickListner.java    | 121 +++++++++++++++++++
 1 file changed, 121 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-mobile/blob/704137b7/app/src/main/java/org/apache/taverna/mobile/ui/adapter/RecyclerItemClickListner.java
----------------------------------------------------------------------
diff --git a/app/src/main/java/org/apache/taverna/mobile/ui/adapter/RecyclerItemClickListner.java b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/RecyclerItemClickListner.java
new file mode 100644
index 0000000..d6fd5d1
--- /dev/null
+++ b/app/src/main/java/org/apache/taverna/mobile/ui/adapter/RecyclerItemClickListner.java
@@ -0,0 +1,121 @@
+package org.apache.taverna.mobile.ui.adapter;
+
+import android.content.Context;
+import android.support.annotation.Nullable;
+import android.support.v7.widget.RecyclerView;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+import android.view.View;
+
+public class RecyclerItemClickListner implements RecyclerView.OnItemTouchListener {
+ 
+    protected OnItemClickListener listener;
+ 
+    private GestureDetector gestureDetector;
+ 
+    @Nullable
+    private View childView;
+ 
+    private int childViewPosition;
+ 
+    public RecyclerItemClickListner(Context context, OnItemClickListener listener) {
+        this.gestureDetector = new GestureDetector(context, new GestureListener());
+        this.listener = listener;
+    } 
+ 
+    @Override 
+    public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent event) {
+        childView = view.findChildViewUnder(event.getX(), event.getY());
+        childViewPosition = view.getChildAdapterPosition(childView);
+ 
+        return childView != null && gestureDetector.onTouchEvent(event);
+    } 
+ 
+    @Override 
+    public void onTouchEvent(RecyclerView view, MotionEvent event) {
+        // Not needed. 
+    } 
+ 
+    @Override 
+    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
+ 
+    } 
+ 
+    /** 
+     * A click listener for items. 
+     */ 
+    public interface OnItemClickListener { 
+ 
+        /** 
+         * Called when an item is clicked. 
+         * 
+         * @param childView View of the item that was clicked. 
+         * @param position  Position of the item that was clicked. 
+         */ 
+        public void onItemClick(View childView, int position);
+ 
+        /** 
+         * Called when an item is long pressed. 
+         * 
+         * @param childView View of the item that was long pressed. 
+         * @param position  Position of the item that was long pressed. 
+         */ 
+        public void onItemLongPress(View childView, int position);
+ 
+    } 
+ 
+    /** 
+     * A simple click listener whose methods can be overridden one by one. 
+     */ 
+    public static abstract class SimpleOnItemClickListener implements OnItemClickListener { 
+ 
+        /** 
+         * Called when an item is clicked. The default implementation is a no-op. 
+         * 
+         * @param childView View of the item that was clicked. 
+         * @param position  Position of the item that was clicked. 
+         */ 
+        public void onItemClick(View childView, int position) {
+            // Do nothing. 
+        } 
+ 
+        /** 
+         * Called when an item is long pressed. The default implementation is a no-op. 
+         * 
+         * @param childView View of the item that was long pressed. 
+         * @param position  Position of the item that was long pressed. 
+         */ 
+        public void onItemLongPress(View childView, int position) {
+            // Do nothing. 
+        } 
+ 
+    } 
+ 
+    protected class GestureListener extends GestureDetector.SimpleOnGestureListener {
+ 
+        @Override 
+        public boolean onSingleTapUp(MotionEvent event) {
+            if (childView != null) {
+                listener.onItemClick(childView, childViewPosition);
+            } 
+ 
+            return true; 
+        } 
+ 
+        @Override 
+        public void onLongPress(MotionEvent event) {
+            if (childView != null) {
+                listener.onItemLongPress(childView, childViewPosition);
+            } 
+        } 
+ 
+        @Override 
+        public boolean onDown(MotionEvent event) {
+            // Best practice to always return true here. 
+            // http://developer.android.com/training/gestures/detector.html#detect 
+            return true; 
+        } 
+ 
+    } 
+ 
+}
\ No newline at end of file