airbnb / epoxy

Epoxy is an Android library for building complex screens in a RecyclerView
https://goo.gl/eIK82p
Apache License 2.0
8.5k stars 733 forks source link

Cannot call this method while RecyclerView is computing a layout or scrolling #1131

Closed hm-tamim closed 3 years ago

hm-tamim commented 3 years ago

Getting this error randomly. Any issue with DiffUtils? the screen has 7+ epoxy carousel

Process: bd.com.evaly.evalyshop, PID: 31124
    java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling bd.com.evaly.evalyshop.views.RecyclerViewNoLeak{d06b6c7 VFED..... ........ 0,0-1440,2565 #7f09034e app:id/recyclerView}, adapter:com.airbnb.epoxy.EpoxyControllerAdapter@a273525, layout:androidx.recyclerview.widget.StaggeredGridLayoutManager@48116fa, context:dagger.hilt.android.internal.managers.ViewComponentManager$FragmentContextWrapper@682ccd
        at androidx.recyclerview.widget.RecyclerView.assertNotInLayoutOrScroll(RecyclerView.java:3051)
        at androidx.recyclerview.widget.RecyclerView$RecyclerViewDataObserver.onItemRangeInserted(RecyclerView.java:5555)
        at androidx.recyclerview.widget.RecyclerView$AdapterDataObservable.notifyItemRangeInserted(RecyclerView.java:12278)
        at androidx.recyclerview.widget.RecyclerView$Adapter.notifyItemRangeInserted(RecyclerView.java:7498)
        at androidx.recyclerview.widget.AdapterListUpdateCallback.onInserted(AdapterListUpdateCallback.java:42)
        at androidx.recyclerview.widget.BatchingListUpdateCallback.dispatchLastEvent(BatchingListUpdateCallback.java:61)
        at androidx.recyclerview.widget.DiffUtil$DiffResult.dispatchUpdatesTo(DiffUtil.java:852)
        at com.airbnb.epoxy.DiffResult.dispatchTo(DiffResult.java:75)
        at com.airbnb.epoxy.DiffResult.dispatchTo(DiffResult.java:70)
        at com.airbnb.epoxy.EpoxyControllerAdapter.onResult(EpoxyControllerAdapter.java:92)
        at com.airbnb.epoxy.AsyncEpoxyDiffer$2.run(AsyncEpoxyDiffer.java:173)
        at com.airbnb.epoxy.HandlerExecutor.execute(HandlerExecutor.java:27)
        at com.airbnb.epoxy.AsyncEpoxyDiffer.onRunCompleted(AsyncEpoxyDiffer.java:168)
        at com.airbnb.epoxy.AsyncEpoxyDiffer.access$100(AsyncEpoxyDiffer.java:21)
        at com.airbnb.epoxy.AsyncEpoxyDiffer$1.run(AsyncEpoxyDiffer.java:155)
        at com.airbnb.epoxy.HandlerExecutor.execute(HandlerExecutor.java:27)
        at com.airbnb.epoxy.AsyncEpoxyDiffer.submitList(AsyncEpoxyDiffer.java:151)
        at com.airbnb.epoxy.EpoxyControllerAdapter.setModels(EpoxyControllerAdapter.java:77)
        at com.airbnb.epoxy.EpoxyController$1.run(EpoxyController.java:299)
        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:7710)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
hm-tamim commented 3 years ago

@elihart Could you please check

elihart commented 3 years ago

Seems like a bug in recyclerview, try using the latest version

hm-tamim commented 3 years ago

Issue resolved after updating to RecyclerView 1.2.0-beta01