Status Update
Comments
sm...@google.com <sm...@google.com> #2
Easy repro: Tap back key during gesture selection.
sm...@google.com <sm...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-master-dev
commit dc37dddeefb6910a229d81612a60374678e615b4
Author: Steve McKay <smckay@google.com>
Date: Wed Aug 14 23:48:25 2019
Add support for resetting library state in response to CANCEL events and clearing of selection.
Sepcifically:
- BandSelectionHelper#reset
- GestureSelectionHelper#reset
- Clearing Selection in tracker.
- Reset the OperationMonitor.
- Connect explicit clearSelection (as clients call from back button) to reset.
GestureDetector is already listening for CANCEL events, cleans up its own state internally.
Related cleanups:
- Add onSelectionCleared support to SelectionObserver class.
- Guard all runtime state checking behind DEBUG bit (mis-configuration still throws).
- Deprecate support for setting gesture/pointer tooltypes.
- Define more events in TestEvents.
- Cleanup naming and consoliate some tests in BandSelectionHelperTest.
- Remove support POINTER_UP in BandSelectionHelper...POINTER_UP is for secondary pointer
devices only, which is outside of the domain of BandSelectionHelper.
BUG: 137460699
Test: Passing, added new test related to reset behavior.
Change-Id: Ie7127571dfa95f571ac754b3ae58e03bb153cbe8
M recyclerview/recyclerview-selection/api/1.1.0-alpha07.txt
M recyclerview/recyclerview-selection/api/current.txt
M recyclerview/recyclerview-selection/api/public_plus_experimental_1.1.0-alpha07.txt
M recyclerview/recyclerview-selection/api/public_plus_experimental_current.txt
M recyclerview/recyclerview-selection/api/restricted_1.1.0-alpha07.txt
M recyclerview/recyclerview-selection/api/restricted_current.txt
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/BandSelectionHelperTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/DefaultSelectionTrackerTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/DefaultSelectionTracker_SingleSelectTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/GestureSelectionHelperTest.java
A recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/ResetMangerTest.java
A recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/SelectionTrackerTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/TouchInputHandlerTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/testing/TestEvents.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/testing/TestRunnable.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/testing/TestSelectionObserver.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/BandSelectionHelper.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/DefaultSelectionTracker.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/GestureDetectorOnItemTouchListenerAdapter.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/GestureSelectionHelper.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/MotionEvents.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/MouseInputHandler.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/OperationMonitor.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/Range.java
A recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/ResetManager.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/SelectionTracker.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/TouchInputHandler.java
https://android-review.googlesource.com/1103351
Branch: androidx-master-dev
commit dc37dddeefb6910a229d81612a60374678e615b4
Author: Steve McKay <smckay@google.com>
Date: Wed Aug 14 23:48:25 2019
Add support for resetting library state in response to CANCEL events and clearing of selection.
Sepcifically:
- BandSelectionHelper#reset
- GestureSelectionHelper#reset
- Clearing Selection in tracker.
- Reset the OperationMonitor.
- Connect explicit clearSelection (as clients call from back button) to reset.
GestureDetector is already listening for CANCEL events, cleans up its own state internally.
Related cleanups:
- Add onSelectionCleared support to SelectionObserver class.
- Guard all runtime state checking behind DEBUG bit (mis-configuration still throws).
- Deprecate support for setting gesture/pointer tooltypes.
- Define more events in TestEvents.
- Cleanup naming and consoliate some tests in BandSelectionHelperTest.
- Remove support POINTER_UP in BandSelectionHelper...POINTER_UP is for secondary pointer
devices only, which is outside of the domain of BandSelectionHelper.
BUG: 137460699
Test: Passing, added new test related to reset behavior.
Change-Id: Ie7127571dfa95f571ac754b3ae58e03bb153cbe8
M recyclerview/recyclerview-selection/api/1.1.0-alpha07.txt
M recyclerview/recyclerview-selection/api/current.txt
M recyclerview/recyclerview-selection/api/public_plus_experimental_1.1.0-alpha07.txt
M recyclerview/recyclerview-selection/api/public_plus_experimental_current.txt
M recyclerview/recyclerview-selection/api/restricted_1.1.0-alpha07.txt
M recyclerview/recyclerview-selection/api/restricted_current.txt
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/BandSelectionHelperTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/DefaultSelectionTrackerTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/DefaultSelectionTracker_SingleSelectTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/GestureSelectionHelperTest.java
A recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/ResetMangerTest.java
A recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/SelectionTrackerTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/TouchInputHandlerTest.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/testing/TestEvents.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/testing/TestRunnable.java
M recyclerview/recyclerview-selection/src/androidTest/java/androidx/recyclerview/selection/testing/TestSelectionObserver.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/BandSelectionHelper.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/DefaultSelectionTracker.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/GestureDetectorOnItemTouchListenerAdapter.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/GestureSelectionHelper.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/MotionEvents.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/MouseInputHandler.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/OperationMonitor.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/Range.java
A recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/ResetManager.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/SelectionTracker.java
M recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/TouchInputHandler.java
sm...@google.com <sm...@google.com> #4
Aiming to have a 1.1 beta release out soon including this fix.
All defensive check stability issues should be resolved with this CL.
All defensive check stability issues should be resolved with this CL.
sm...@google.com <sm...@google.com> #5
BTW, working on a fix for this (general improvement to state management). My unassigning this issue from me should not be construed as lack of attention to the matter. I just manage issues by hotlist (rather than ownership).
sm...@google.com <sm...@google.com> #7
Fixed in upcoming beta01 release.
Description
I am trying to combine selection library with paging library. Loading items from paging library works ok, but when I try to select item with long click (or with long click and dragging to select more items), the app crash:
java.lang.IllegalStateException: Range start point not set.
at androidx.core.util.Preconditions.checkState(Preconditions.java:131)
at androidx.recyclerview.selection.DefaultSelectionTracker.extendProvisionalRange(DefaultSelectionTracker.java:281)
at androidx.recyclerview.selection.GestureSelectionHelper.extendSelection(GestureSelectionHelper.java:227)
at androidx.recyclerview.selection.GestureSelectionHelper.handleMoveEvent(GestureSelectionHelper.java:204)
at androidx.recyclerview.selection.GestureSelectionHelper.handleTouch(GestureSelectionHelper.java:151)
at androidx.recyclerview.selection.GestureSelectionHelper.onTouchEvent(GestureSelectionHelper.java:125)
at androidx.recyclerview.selection.TouchEventRouter.onTouchEvent(TouchEventRouter.java:103)
at androidx.recyclerview.widget.RecyclerView.dispatchOnItemTouch(RecyclerView.java:2947)
at androidx.recyclerview.widget.RecyclerView.onTouchEvent(RecyclerView.java:3090)
at android.view.View.dispatchTouchEvent(View.java:10013)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2665)
...
When you pre-load some pages with scrolling the RecyclerView, it crash after selecting more items with dragging. See attached videos.
Sample code attached.
Library versions:
RecyclerView: 1.0.0
RecyclerView Selection:1.0.0
Paging: 2.1.0