diff --git a/app/src/main/java/androidx/recyclerview/selection/GestureSelectionHelper.java b/app/src/main/java/androidx/recyclerview/selection/GestureSelectionHelper.java index 7f2a5bb2..3736ada4 100644 --- a/app/src/main/java/androidx/recyclerview/selection/GestureSelectionHelper.java +++ b/app/src/main/java/androidx/recyclerview/selection/GestureSelectionHelper.java @@ -98,7 +98,7 @@ final class GestureSelectionHelper implements OnItemTouchListener { case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: - return mStarted; + return mStarted && mSelectionMgr.isRangeActive(); default: return false; } diff --git a/app/src/main/java/androidx/recyclerview/selection/SelectionTracker.java b/app/src/main/java/androidx/recyclerview/selection/SelectionTracker.java index ae3785df..1591ff4b 100644 --- a/app/src/main/java/androidx/recyclerview/selection/SelectionTracker.java +++ b/app/src/main/java/androidx/recyclerview/selection/SelectionTracker.java @@ -765,7 +765,13 @@ public abstract class SelectionTracker { new Runnable() { @Override public void run() { - gestureHelper.start(); + if (mSelectionPredicate.canSelectMultiple()) { + try { + gestureHelper.start(); + } catch (IllegalStateException ex) { + ex.printStackTrace(); + } + } } }, mOnDragInitiatedListener, diff --git a/app/src/main/java/androidx/recyclerview/selection/TouchInputHandler.java b/app/src/main/java/androidx/recyclerview/selection/TouchInputHandler.java index d82812cc..48db78ec 100644 --- a/app/src/main/java/androidx/recyclerview/selection/TouchInputHandler.java +++ b/app/src/main/java/androidx/recyclerview/selection/TouchInputHandler.java @@ -107,6 +107,11 @@ final class TouchInputHandler extends MotionInputHandler { } @Override + public boolean onDoubleTapEvent(MotionEvent e) { + return mSelectionTracker.hasSelection(); + } + + @Override public void onLongPress(@NonNull MotionEvent e) { if (!mDetailsLookup.overItemWithSelectionKey(e)) { if (DEBUG) Log.d(TAG, "Ignoring LongPress on non-model-backed item.");