Status Update
Comments
al...@android.com <al...@android.com>
yb...@google.com <yb...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
commit b6c7c78f9e7476b468dafe9d5f7dec6794d47f09
Author: Shahd AbuDaghash <shahddaghash@google.com>
Date: Mon Nov 27 11:16:51 2023
Introduce DecayAnimation in AnchoredDraggable
Decay animation allows more realistic settling of a component. This is performed by now passing a `DecayAnimationSpec` parameter to AnchoredDraggable and using it when animating to the target. The new animation implementation will be added in a chain CL.
Bug: 288084801
Test: Tests will be added in a chain CL
Relnote: This change adds a `decayAnimationSpec` parameter to AnchoredDraggable allowing to use decay animation when settling to one of the anchors. The change also includes renaming the existing `animationSpec` to `snapAnimationSpec` to help understanding the use case of each spec.
Change-Id: I44ccd408d919328fd6504d31d8db59cf1d07de43
M compose/foundation/foundation/api/current.txt
M compose/foundation/foundation/api/restricted_current.txt
M compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/AnchoredDraggableSample.kt
M compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/anchoredDraggable/AnchoredDraggableGestureTest.kt
M compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/anchoredDraggable/AnchoredDraggableStateTest.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/AnchoredDraggable.kt
https://android-review.googlesource.com/2847074
Branch: androidx-main
commit b6c7c78f9e7476b468dafe9d5f7dec6794d47f09
Author: Shahd AbuDaghash <shahddaghash@google.com>
Date: Mon Nov 27 11:16:51 2023
Introduce DecayAnimation in AnchoredDraggable
Decay animation allows more realistic settling of a component. This is performed by now passing a `DecayAnimationSpec` parameter to AnchoredDraggable and using it when animating to the target. The new animation implementation will be added in a chain CL.
Bug: 288084801
Test: Tests will be added in a chain CL
Relnote: This change adds a `decayAnimationSpec` parameter to AnchoredDraggable allowing to use decay animation when settling to one of the anchors. The change also includes renaming the existing `animationSpec` to `snapAnimationSpec` to help understanding the use case of each spec.
Change-Id: I44ccd408d919328fd6504d31d8db59cf1d07de43
M compose/foundation/foundation/api/current.txt
M compose/foundation/foundation/api/restricted_current.txt
M compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/AnchoredDraggableSample.kt
M compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/anchoredDraggable/AnchoredDraggableGestureTest.kt
M compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/anchoredDraggable/AnchoredDraggableStateTest.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/AnchoredDraggable.kt
ee...@gmail.com <ee...@gmail.com> #3
Project: platform/frameworks/support
Branch: androidx-main
commit 365993d1a90c27704b71f6bee042a1749314a4b1
Author: Shahd AbuDaghash <shahddaghash@google.com>
Date: Tue Nov 28 10:49:56 2023
Add tests for Animation in AnchoredDraggable
Added tests to check for different settling behaviors.
Bug: 288084801
Test: Added tests to verify behavior.
Change-Id: I369b30c69f7c29f676ae0671fef25c38ff3c74cb
M compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/anchoredDraggable/AnchoredDraggableStateTest.kt
https://android-review.googlesource.com/2847475
Branch: androidx-main
commit 365993d1a90c27704b71f6bee042a1749314a4b1
Author: Shahd AbuDaghash <shahddaghash@google.com>
Date: Tue Nov 28 10:49:56 2023
Add tests for Animation in AnchoredDraggable
Added tests to check for different settling behaviors.
Bug: 288084801
Test: Added tests to verify behavior.
Change-Id: I369b30c69f7c29f676ae0671fef25c38ff3c74cb
M compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/anchoredDraggable/AnchoredDraggableStateTest.kt
ee...@gmail.com <ee...@gmail.com> #4
Project: platform/frameworks/support
Branch: androidx-main
commit ff1a600df5f4d8ae21a75d8e3e0f24d6c5c2faee
Author: Shahd AbuDaghash <shahddaghash@google.com>
Date: Mon Nov 27 15:51:12 2023
Modify settle function to perform decay animation if possible
When settling, a check will be performed to see if natural decay animation can be used. If not so, a target animation will be used. The consumed velocity is returned to the settle function, which could be used to show an overscroll effect.
Bug: 288084801
Test: Tests will be added in a chain CL.
Relnote: This change introduces a new `animateToWithDecay` function that naturally decays if possible. It takes the target value and the initial velocity. The `animateTo` functions no longer takes a velocity, but passes the available velocity in `lastVelocity` to animation, as it is concerned with reaching the target. If users need to pass a certain velocity for animation, they can use `animateToWithDecay` function.
Change-Id: I465dbd826e3969b784d08c65425f4bbda3de8493
M compose/foundation/foundation/api/current.txt
M compose/foundation/foundation/api/restricted_current.txt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/AnchoredDraggable.kt
https://android-review.googlesource.com/2847576
Branch: androidx-main
commit ff1a600df5f4d8ae21a75d8e3e0f24d6c5c2faee
Author: Shahd AbuDaghash <shahddaghash@google.com>
Date: Mon Nov 27 15:51:12 2023
Modify settle function to perform decay animation if possible
When settling, a check will be performed to see if natural decay animation can be used. If not so, a target animation will be used. The consumed velocity is returned to the settle function, which could be used to show an overscroll effect.
Bug: 288084801
Test: Tests will be added in a chain CL.
Relnote: This change introduces a new `animateToWithDecay` function that naturally decays if possible. It takes the target value and the initial velocity. The `animateTo` functions no longer takes a velocity, but passes the available velocity in `lastVelocity` to animation, as it is concerned with reaching the target. If users need to pass a certain velocity for animation, they can use `animateToWithDecay` function.
Change-Id: I465dbd826e3969b784d08c65425f4bbda3de8493
M compose/foundation/foundation/api/current.txt
M compose/foundation/foundation/api/restricted_current.txt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/AnchoredDraggable.kt
yb...@google.com <yb...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-main
commit 01142ddd5b14eb33e5145c4e72e6619a5c100fe4
Author: Shahd AbuDaghash <shahddaghash@google.com>
Date: Thu Dec 21 12:34:00 2023
Introduce Overscroll in AnchoredDraggable
Adding overscroll support to AnchoredDraggable by giving the ability to pass a customized overscrollEffect object to AnchoredDraggable.
Bug: 288084801
Relnote: An OverscrollEffect has been introduced to allow for custom overscroll effects in anchoredDraggable. To retrieve the consumed velocity after animation, the consumed velocity is returned from the settle function.
Test: Added tests to verify behavior
Change-Id: I100683fe7473b1e5ff317ab22245a2b0a25bd549
M compose/foundation/foundation/api/current.txt
M compose/foundation/foundation/api/restricted_current.txt
M compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/AnchoredDraggableDemo.kt
M compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/AnchoredDraggableSample.kt
A compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/anchoredDraggable/AnchoredDraggableOverscrollTest.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/AnchoredDraggable.kt
https://android-review.googlesource.com/2888106
Branch: androidx-main
commit 01142ddd5b14eb33e5145c4e72e6619a5c100fe4
Author: Shahd AbuDaghash <shahddaghash@google.com>
Date: Thu Dec 21 12:34:00 2023
Introduce Overscroll in AnchoredDraggable
Adding overscroll support to AnchoredDraggable by giving the ability to pass a customized overscrollEffect object to AnchoredDraggable.
Bug: 288084801
Relnote: An OverscrollEffect has been introduced to allow for custom overscroll effects in anchoredDraggable. To retrieve the consumed velocity after animation, the consumed velocity is returned from the settle function.
Test: Added tests to verify behavior
Change-Id: I100683fe7473b1e5ff317ab22245a2b0a25bd549
M compose/foundation/foundation/api/current.txt
M compose/foundation/foundation/api/restricted_current.txt
M compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/AnchoredDraggableDemo.kt
M compose/foundation/foundation/samples/src/main/java/androidx/compose/foundation/samples/AnchoredDraggableSample.kt
A compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/anchoredDraggable/AnchoredDraggableOverscrollTest.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/AnchoredDraggable.kt
al...@gmail.com <al...@gmail.com> #6
Project: platform/frameworks/support
Branch: androidx-main
commit 0f071d797bccf7eff2a23e408928ca76640af782
Author: Shahd AbuDaghash <shahddaghash@google.com>
Date: Wed Nov 29 18:34:09 2023
Migrates AnchoredDraggable to Modifier.Node
Migrates AnchoredDraggable to Modifier.Node. This helps in adding Overscroll effect in AnchoredDraggable.
Bug: 288084801
Test: Added tests to verify behavior
Change-Id: I3f3338cd71763972c4b70f2e06c97e85285b0035
M compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/anchoredDraggable/AnchoredDraggableGestureTest.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/AnchoredDraggable.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Draggable.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Draggable2D.kt
https://android-review.googlesource.com/2852691
Branch: androidx-main
commit 0f071d797bccf7eff2a23e408928ca76640af782
Author: Shahd AbuDaghash <shahddaghash@google.com>
Date: Wed Nov 29 18:34:09 2023
Migrates AnchoredDraggable to Modifier.Node
Migrates AnchoredDraggable to Modifier.Node. This helps in adding Overscroll effect in AnchoredDraggable.
Bug: 288084801
Test: Added tests to verify behavior
Change-Id: I3f3338cd71763972c4b70f2e06c97e85285b0035
M compose/foundation/foundation/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/anchoredDraggable/AnchoredDraggableGestureTest.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/AnchoredDraggable.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Draggable.kt
M compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/gestures/Draggable2D.kt
yb...@google.com <yb...@google.com> #7
This issue is marked as fixed, but there is still no replacement for ResistanceConfig
.
How should we properly migrate it?
an...@framna.com <an...@framna.com> #8
Can we document this / update the migration guide?
yb...@google.com <yb...@google.com> #9
#9 That kind of adapter bug will create all sorts of problems. I understand expecting a better error but RecyclerView does not try to validate an Adapter implementation. It is up to the developer to test their adapter because doing this in RecyclerView will come with significant runtime performance & complexity cost.
ar...@gmail.com <ar...@gmail.com> #10
I have the same issue. Here is mine stacktrace:
java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference
at android.support.v7.widget.SimpleItemAnimator.animateChange(SimpleItemAnimator.java:130)
at android.support.v7.widget.RecyclerView.animateChange(RecyclerView.java:3062)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2924)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3071)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1627)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1037)
at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:747)
at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1156)
at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:760)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.flipboard.bottomsheet.BottomSheetLayout.onLayout(BottomSheetLayout.java:208)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1043)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.d
java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference
at android.support.v7.widget.SimpleItemAnimator.animateChange(SimpleItemAnimator.java:130)
at android.support.v7.widget.RecyclerView.animateChange(RecyclerView.java:3062)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2924)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3071)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1627)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1037)
at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:747)
at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1156)
at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:760)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.flipboard.bottomsheet.BottomSheetLayout.onLayout(BottomSheetLayout.java:208)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1043)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.d
yb...@google.com <yb...@google.com> #11
#11 do you have a sample app to reproduce the issue ?
ar...@gmail.com <ar...@gmail.com> #12
Well. I made a sample app with stable crash.
Probably the problem occurs when I try to add duplicate item to an adapter and then apply some structural changes.
When I add a new object with the same ID nothing happens.
I don't know exactly if it an only case. But I gonna try to fix duplicates in my app and then check for this crash.
Probably the problem occurs when I try to add duplicate item to an adapter and then apply some structural changes.
When I add a new object with the same ID nothing happens.
I don't know exactly if it an only case. But I gonna try to fix duplicates in my app and then check for this crash.
yb...@google.com <yb...@google.com> #13
#13 thanks for the demo.
I quickly checked your app and unfortunately, it is a bug in your app not in RecyclerView.
Stable Ids have to be stable & unique.
Your id is declared as
@Override
public long getItemId(final int position) {
return get(position).getTitle().hashCode();
}
So when you add the same city twice, you end up with two items that have the same ID which is not supported. Also, as a side note, don't use hashCode as stable ids. You cannot rely on them as they are not necessarily unique.
I quickly checked your app and unfortunately, it is a bug in your app not in RecyclerView.
Stable Ids have to be stable & unique.
Your id is declared as
@Override
public long getItemId(final int position) {
return get(position).getTitle().hashCode();
}
So when you add the same city twice, you end up with two items that have the same ID which is not supported. Also, as a side note, don't use hashCode as stable ids. You cannot rely on them as they are not necessarily unique.
ar...@gmail.com <ar...@gmail.com> #14
[Comment deleted]
ar...@gmail.com <ar...@gmail.com> #15
[Comment deleted]
ar...@gmail.com <ar...@gmail.com> #16
As I said, if I add a new item with the same ID, the app will not crash. And I know that ID should be unique. I think the recycler should throw an appropriate exception not just a NPE.
Btw on 22.* version everything is fine even with non unique IDs. ;)
P.s.: In my work application I checked all ids and they are unique. But the NPE is still here.
I'll try to find more info about it.
Btw on 22.* version everything is fine even with non unique IDs. ;)
P.s.: In my work application I checked all ids and they are unique. But the NPE is still here.
I'll try to find more info about it.
yb...@google.com <yb...@google.com> #17
It would actually never work fine before as well, just may not crash. RecyclerView could be showing wrong views to the user when stable ids are not stable and unique.
Fixing this crash w/ a null check trivial but I wont to get to the bottom of this to see why it happens and fix that instead. These constraints (nonnull in thsi case) help make the code more stable / cleaner.
Looking forward to another sample app, hope you can figure it out.
Fixing this crash w/ a null check trivial but I wont to get to the bottom of this to see why it happens and fix that instead. These constraints (nonnull in thsi case) help make the code more stable / cleaner.
Looking forward to another sample app, hope you can figure it out.
ta...@gmail.com <ta...@gmail.com> #18
After refactoring some code to replace all calls to RecyclerView.Adapter.notifyDataSetChanged() with the more specific notifyItem{Inserted,Removed,...} variants, the crash seems to have gone away for me.
The bug could possibly have been triggered by something else that changed during the refactoring, but that seemed like the most relevant change.
The bug could possibly have been triggered by something else that changed during the refactoring, but that seemed like the most relevant change.
yb...@google.com <yb...@google.com> #19
So the only time we've received this bug is when stable & unique ids are not stable and unique.
Unfortunately, if we change RV to track this, it will add additional runtime cost which properly implemented applications should not pay.
What I'll do is go ahead and add a null check to the place where null is unexpected. If it is null, RV will check if this multiple VHs have the same change id. If thats the case, we'll crash with the exception clarifying the error so that developer can fix their code.
If it is not the case, it will crash with a generic IllegalStateException with the list of ViewHolders so that we can collect more information about the case.
Unfortunately, if we change RV to track this, it will add additional runtime cost which properly implemented applications should not pay.
What I'll do is go ahead and add a null check to the place where null is unexpected. If it is null, RV will check if this multiple VHs have the same change id. If thats the case, we'll crash with the exception clarifying the error so that developer can fix their code.
If it is not the case, it will crash with a generic IllegalStateException with the list of ViewHolders so that we can collect more information about the case.
yb...@google.com <yb...@google.com> #20
So I've changed RV code to detect this error and check if it happens because of duplicate ids.
If so, it'll crash with proper exception.
If not, it will only log an error and move on. To clarify, there is really no expected use case for this so it is still an error so if you are seeing the log (not the crash), please report back and we can investigate further,
If so, it'll crash with proper exception.
If not, it will only log an error and move on. To clarify, there is really no expected use case for this so it is still an error so if you are seeing the log (not the crash), please report back and we can investigate further,
ma...@gmail.com <ma...@gmail.com> #21
[Comment deleted]
si...@gmail.com <si...@gmail.com> #22
How can I downgrade to to support 23.0.1?
ja...@gmail.com <ja...@gmail.com> #23
@23
configurations.all {
resolutionStrategy.force 'com.android.support:recyclerview-v7:23.0.1'
}
configurations.all {
resolutionStrategy.force 'com.android.support:recyclerview-v7:23.0.1'
}
re...@gmail.com <re...@gmail.com> #24
I have this issue while upgrading from 23.1.1 to 23.2.0 using a RecyclerView. I did not override getItemId
yb...@google.com <yb...@google.com> #25
#25 do you have a sample app to reproduce ?
af...@gmail.com <af...@gmail.com> #26
I've encountered a similar error when upgrading from 23.1.1 to 23.2.0 (happening in animateDisapperance instead of animateChange though). Stack trace added below. I am attempting to create a sample app that replicates the issue, but it's proving tricky to replicate (note: this does happen every time in our app.
java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference
at android.support.v7.widget.SimpleItemAnimator.animateDisappearance(SimpleItemAnimator.java:78)
at android.support.v7.widget.RecyclerView.animateDisappearance(RecyclerView.java:3246)
at android.support.v7.widget.RecyclerView.access$700(RecyclerView.java:147)
at android.support.v7.widget.RecyclerView$4.processDisappeared(RecyclerView.java:422)
at android.support.v7.widget.ViewInfoStore.process(ViewInfoStore.java:231)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3086)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2914)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3277)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1183)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference
at android.support.v7.widget.SimpleItemAnimator.animateDisappearance(SimpleItemAnimator.java:78)
at android.support.v7.widget.RecyclerView.animateDisappearance(RecyclerView.java:3246)
at android.support.v7.widget.RecyclerView.access$700(RecyclerView.java:147)
at android.support.v7.widget.RecyclerView$4.processDisappeared(RecyclerView.java:422)
at android.support.v7.widget.ViewInfoStore.process(ViewInfoStore.java:231)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3086)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2914)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3277)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1183)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
at android.view.View.layout(View.java:16630)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
af...@gmail.com <af...@gmail.com> #27
Follow-up comment to #27, we do not use setHasStableIds(true) or override getItemId in our adapter.
yb...@google.com <yb...@google.com> #28
#27 there was a bug where a changed item disappears, we were getting NPE. The stack trace is different but maybe this is also what is happening in your case?
That was bug reported here:
https://code.google.com/p/android/issues/detail?id=202136
And is already fixed and waiting for release.
That was bug reported here:
And is already fixed and waiting for release.
af...@gmail.com <af...@gmail.com> #29
Turns out the issue in #27 was resolved by changing the RecyclerView's height to match_parent instead of wrap_content.
yb...@google.com <yb...@google.com> #30
thats scary :/. I would appreciate if you can reproduce this error in a sample application.
af...@gmail.com <af...@gmail.com> #31
I'll continue to work on it. Should I open a separate issue if I am able to replicate it?
yb...@google.com <yb...@google.com> #32
you can add it here since I'm already tracking this one. Once you have a sample app, i'll re-open this issue. Thanks.
af...@gmail.com <af...@gmail.com> #33
Got it replicating. Crash happens every time on Nexus 5X running API 23.
Sample is made to match as closely to the app that discovered it. Note that the crash does not occur in 23.1.1, but does in 23.2. Let me know if there's any issues with the sample.
Sample is made to match as closely to the app that discovered it. Note that the crash does not occur in 23.1.1, but does in 23.2. Let me know if there's any issues with the sample.
yb...@google.com <yb...@google.com> #34
thanks a lot, i've re-opened the bug and will check your sample soon.
yb...@google.com <yb...@google.com> #35
thanks a lot, i can reproduce the error. Working on it.
yb...@google.com <yb...@google.com> #36
ok this happens when layout manager adds the view then removes it in the same measure pass.
RV tries to animate disappearance although the view is never really added (so there is no pre-info)
we'll simply recycle out the child.
thanks a lot!
RV tries to animate disappearance although the view is never really added (so there is no pre-info)
we'll simply recycle out the child.
thanks a lot!
yb...@google.com <yb...@google.com> #37
the isssue mentioned in #34 is fixed now and will be released in the next version.
cv...@gmail.com <cv...@gmail.com> #38
java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference happens when simply calling recyclerview.scrollToPosition(position).
Can attach a simple project. StableID's (they are all unique). Also this new version seems to have photo loading issues as well.
Can attach a simple project. StableID's (they are all unique). Also this new version seems to have photo loading issues as well.
yb...@google.com <yb...@google.com> #39
idk what you mean by "to have photo loading issues as well." since RV does not handle any photo loading.
I would appreciate a sample project so that I can look at it.
I would appreciate a sample project so that I can look at it.
ma...@gmail.com <ma...@gmail.com> #40
We are seeing this issue since we updated to version 23.2.0 of the support libraries. There are only 2 reports so far: I both cases, the user was simply reordering the list via drag. Marshmallow and Lollipop. I have not been able myself to reproduce the error.
We neither use setHasStableIds(boolean) nor getItemId(int).
Fragment:https://github.com/AntennaPod/AntennaPod/blob/develop/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java#L475
Adapter:https://github.com/AntennaPod/AntennaPod/blob/develop/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java
We neither use setHasStableIds(boolean) nor getItemId(int).
Fragment:
Adapter:
ds...@gmail.com <ds...@gmail.com> #41
java.lang.NullPointerException
at android.support.v7.widget.SimpleItemAnimator.animateDisappearance(SimpleItemAnimator.java:78)
at android.support.v7.widget.RecyclerView.animateDisappearance(RecyclerView.java:3246)
at android.support.v7.widget.RecyclerView.access$700(RecyclerView.java:147)
at android.support.v7.widget.RecyclerView$4.processDisappeared(RecyclerView.java:422)
at android.support.v7.widget.ViewInfoStore.process(ViewInfoStore.java:231)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3086)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2914)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3277)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1055)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:122)
at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1139)
at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:810)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1183)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2026)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1783)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1039)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5648)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
at android.view.Choreographer.doCallbacks(Choreographer.java:574)
at android.view.Choreographer.doFrame(Choreographer.ja
at android.support.v7.widget.SimpleItemAnimator.animateDisappearance(SimpleItemAnimator.java:78)
at android.support.v7.widget.RecyclerView.animateDisappearance(RecyclerView.java:3246)
at android.support.v7.widget.RecyclerView.access$700(RecyclerView.java:147)
at android.support.v7.widget.RecyclerView$4.processDisappeared(RecyclerView.java:422)
at android.support.v7.widget.ViewInfoStore.process(ViewInfoStore.java:231)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3086)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2914)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3277)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1055)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.support.design.widget.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:122)
at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1139)
at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:810)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1183)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
at android.view.View.layout(View.java:14845)
at android.view.ViewGroup.layout(ViewGroup.java:4631)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2026)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1783)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1039)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5648)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
at android.view.Choreographer.doCallbacks(Choreographer.java:574)
at android.view.Choreographer.doFrame(Choreographer.ja
zo...@gmail.com <zo...@gmail.com> #42
yh...@gmail.com <yh...@gmail.com> #43
Same issue with #27, #42 on version 23.2.0. #30 doesn't fix my problem.
Confirmed version 23.2.1 fixes my problem. Thanks.
Confirmed version 23.2.1 fixes my problem. Thanks.
[Deleted User] <[Deleted User]> #44
This is still happening for me
Process: com.tickledmedia.ParentTown, PID: 15390
java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference
at android.support.v7.widget.SimpleItemAnimator.animateDisappearance(SimpleItemAnimator.java:78)
at android.support.v7.widget.RecyclerView.animateDisappearance(RecyclerView.java:3246)
at android.support.v7.widget.RecyclerView.access$700(RecyclerView.java:147)
at android.support.v7.widget.RecyclerView$4.processDisappeared(RecyclerView.java:422)
at android.support.v7.widget.ViewInfoStore.process(ViewInfoStore.java:231)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3086)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2914)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3277)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1735)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1579)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1488)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2179)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1939)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1115)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6023)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Tried switching to 23.2.1 / 23.3.0 but no luck
so basically i'm showing loader at first and then removing loader and adding new items to list
so flow is
notifiy Item added - The loader
notify item removed - The loader
notify item added - the actual data list
works cool for first time but crashes on loading next set of item with same flow as above
Process: com.tickledmedia.ParentTown, PID: 15390
java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference
at android.support.v7.widget.SimpleItemAnimator.animateDisappearance(SimpleItemAnimator.java:78)
at android.support.v7.widget.RecyclerView.animateDisappearance(RecyclerView.java:3246)
at android.support.v7.widget.RecyclerView.access$700(RecyclerView.java:147)
at android.support.v7.widget.RecyclerView$4.processDisappeared(RecyclerView.java:422)
at android.support.v7.widget.ViewInfoStore.process(ViewInfoStore.java:231)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3086)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2914)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3277)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1735)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1579)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1488)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
at android.view.View.layout(View.java:16636)
at android.view.ViewGroup.layout(ViewGroup.java:5437)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2179)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1939)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1115)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6023)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:606)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Tried switching to 23.2.1 / 23.3.0 but no luck
so basically i'm showing loader at first and then removing loader and adding new items to list
so flow is
notifiy Item added - The loader
notify item removed - The loader
notify item added - the actual data list
works cool for first time but crashes on loading next set of item with same flow as above
vi...@gmail.com <vi...@gmail.com> #45
na...@gmail.com <na...@gmail.com> #46
For me, same issue is happening . In gradle I added the dependency is
compile 'com.android.support:recyclerview-v7:23.2.0'
The logs are below.
FATAL EXCEPTION: main
01-10 14:43:33.239 17085 17085 E AndroidRuntime: Process: com.steroid.launcher, PID: 17085
01-10 14:43:33.239 17085 17085 E AndroidRuntime: java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.SimpleItemAnimator.animateDisappearance(SimpleItemAnimator.java:78)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.RecyclerView.animateDisappearance(RecyclerView.java:3246)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.RecyclerView.access$700(RecyclerView.java:147)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.RecyclerView$4.processDisappeared(RecyclerView.java:422)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.ViewInfoStore.process(ViewInfoStore.java:231)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3086)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2914)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3277)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1732)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.onLayout(LinearLayout.java:1497)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at com.android.launcher3.SlidingUpPanelLayout.onLayout(SlidingUpPanelLayout.java:588)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at com.android.launcher3.DragLayer.onLayout(DragLayer.java:525)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2694)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.Choreographer.doCallbac
compile 'com.android.support:recyclerview-v7:23.2.0'
The logs are below.
FATAL EXCEPTION: main
01-10 14:43:33.239 17085 17085 E AndroidRuntime: Process: com.steroid.launcher, PID: 17085
01-10 14:43:33.239 17085 17085 E AndroidRuntime: java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.SimpleItemAnimator.animateDisappearance(SimpleItemAnimator.java:78)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.RecyclerView.animateDisappearance(RecyclerView.java:3246)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.RecyclerView.access$700(RecyclerView.java:147)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.RecyclerView$4.processDisappeared(RecyclerView.java:422)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.ViewInfoStore.process(ViewInfoStore.java:231)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3086)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2914)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3277)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1732)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.onLayout(LinearLayout.java:1497)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at com.android.launcher3.SlidingUpPanelLayout.onLayout(SlidingUpPanelLayout.java:588)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at com.android.launcher3.DragLayer.onLayout(DragLayer.java:525)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2694)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.View.layout(View.java:16655)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewGroup.layout(ViewGroup.java:5471)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
01-10 14:43:33.239 17085 17085 E AndroidRuntime: at android.view.Choreographer.doCallbac
yb...@google.com <yb...@google.com> #47
#48, 23.2 is super old, please use the latest version.
Description
java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference
at android.support.v7.widget.SimpleItemAnimator.animateChange(SimpleItemAnimator.java:130)
at android.support.v7.widget.RecyclerView.animateChange(RecyclerView.java:3062)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2924)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3071)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1037)
at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:747)
at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1133)
at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:760)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
at android.view.View.layout(View.java:15614)
at android.view.ViewGroup.layout(ViewGroup.java:4968)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2102)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1859)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1077)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5884)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)