sparrow007 / CarouselRecyclerview

Carousel Recyclerview let's you create carousel layout with the power of recyclerview by creating custom layout manager.
Apache License 2.0
634 stars 78 forks source link

Removing an item causes NullPointerException #26

Closed burcsade closed 2 years ago

burcsade commented 2 years ago

When an item is removed from the backing dataset and adapter is notified via notifyItemRemoved method, demo app crashes with NullPointerException.

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.jackandphantom.carousellayout, PID: 28559
    java.lang.NullPointerException
        at com.jackandphantom.carouselrecyclerview.CarouselLayoutManager.getChildActualPos(CarouselLayoutManager.kt:468)
        at com.jackandphantom.carouselrecyclerview.CarouselRecyclerview.getChildDrawingOrder(CarouselRecyclerview.kt:106)
        at android.view.ViewGroup.getAndVerifyPreorderedIndex(ViewGroup.java:2134)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4351)
        at android.view.View.draw(View.java:22670)
        at androidx.recyclerview.widget.RecyclerView.draw(RecyclerView.java:4429)
        at android.view.View.updateDisplayListIfDirty(View.java:21491)
        at android.view.View.draw(View.java:22377)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4595)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4354)
        at android.view.View.updateDisplayListIfDirty(View.java:21482)
        at android.view.View.draw(View.java:22377)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4595)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4354)
        at android.view.View.updateDisplayListIfDirty(View.java:21482)
        at android.view.View.draw(View.java:22377)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4595)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4354)
        at android.view.View.updateDisplayListIfDirty(View.java:21482)
        at android.view.View.draw(View.java:22377)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4595)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4354)
        at android.view.View.updateDisplayListIfDirty(View.java:21482)
        at android.view.View.draw(View.java:22377)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4595)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4354)
        at android.view.View.updateDisplayListIfDirty(View.java:21482)
        at android.view.View.draw(View.java:22377)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4595)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4354)
        at android.view.View.draw(View.java:22670)
        at com.android.internal.policy.DecorView.draw(DecorView.java:826)
        at android.view.View.updateDisplayListIfDirty(View.java:21491)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:559)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:565)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:642)
        at android.view.ViewRootImpl.draw(ViewRootImpl.java:4372)
        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4077)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3335)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2135)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8636)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1035)
        at android.view.Choreographer.doCallbacks(Choreographer.java:858)
        at android.view.Choreographer.doFrame(Choreographer.java:789)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1020)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:236)
        at android.app.ActivityThread.main(ActivityThread.java:8045)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:620)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011)
sparrow007 commented 2 years ago

Hi @burcsade thanks for very great explanation on the adapter update exception, i will fix the issue ASAP