I'm trying to animate clearing of recyclerview. For adapter I use ListAdapter, and to make animation happen I simply submit empty list when needed, layout manager is grid with span of 5, recycler view is placed inside ConstraintLayout and have match_parent width and constant height. I've tried to override both animateRemove and animateDisappearance, also tried to add viewholders to array and use runPendingAnimations to run animations together but this crash still happens. For animation I just inflate simple Animation resource, almost the same animation I use in animateAdd, which works great
This is log from animator before crash, is it odd? Do you have any ideas why this could happen? From what I've found people face the same crash when they try to remove view from parent during animation, but in this case I just run animation, no removing from my side
java.lang.NullPointerException: Attempt to read from field 'int android.view.View.mViewFlags' on a null object reference
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4192)
at android.view.View.updateDisplayListIfDirty(View.java:20843)
at android.view.View.draw(View.java:21707)
at android.view.ViewGroup.drawChild(ViewGroup.java:4432)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193)
at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:2023)
at android.view.View.updateDisplayListIfDirty(View.java:20843)
at android.view.View.draw(View.java:21707)
at android.view.ViewGroup.drawChild(ViewGroup.java:4432)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193)
at androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw(ConstraintLayout.java:2023)
at android.view.View.updateDisplayListIfDirty(View.java:20843)
at android.view.View.draw(View.java:21707)
at android.view.ViewGroup.drawChild(ViewGroup.java:4432)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193)
at android.view.View.draw(View.java:21978)
at android.view.View.updateDisplayListIfDirty(View.java:20852)
at android.view.View.draw(View.java:21707)
at android.view.ViewGroup.drawChild(ViewGroup.java:4432)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193)
at android.view.View.updateDisplayListIfDirty(View.java:20843)
at android.view.View.draw(View.java:21707)
at android.view.ViewGroup.drawChild(ViewGroup.java:4432)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193)
at android.view.View.updateDisplayListIfDirty(View.java:20843)
at android.view.View.draw(View.java:21707)
at android.view.ViewGroup.drawChild(ViewGroup.java:4432)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193)
at android.view.View.updateDisplayListIfDirty(View.java:20843)
at android.view.View.draw(View.java:21707)
at android.view.ViewGroup.drawChild(ViewGroup.java:4432)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4193)
at android.view.View.draw(View.java:21978)
at com.android.internal.policy.DecorView.draw(DecorView.java:808)
at android.view.View.updateDisplayListIfDirty(View.java:20852)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:581)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:587)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:664)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:3767)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3495)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2779)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1745)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7768)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:967)
at android.view.Choreographer.doCallbacks(Choreographer.java:791)
at android.view.Choreographer.doFrame(Choreographer.java:726)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
2020-09-17 16:14:40.115 I/Process: Sending signal. PID: 9136 SIG: 9
Edit: Link to github sample project: https://github.com/SYtor/Animator-Crash-Test/blob/master/app/src/main/java/com/example/crashtest/MyAnimator.kt