airbnb / epoxy

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

NullPointerException:Attempt to invoke virtual method 'void com.airbnb.epoxy.ViewHolderState.restore(ViewHolderState.java)' on a null object reference #1270

Closed StefanShan closed 2 years ago

StefanShan commented 2 years ago

I saw an occasional bug on the line, but looking at the code, it seems that there is no null situation here. What could be the cause? I use the epoxy version is 3.10.0。

java.lang.NullPointerException: Attempt to invoke virtual method 'void com.airbnb.epoxy.ViewHolderState.restore(ViewHolderState.java)' on a null object reference
    at com.airbnb.epoxy.BaseEpoxyAdapter.onBindViewHolder(BaseEpoxyAdapter.java:110)
    at com.airbnb.epoxy.BaseEpoxyAdapter.onBindViewHolder(BaseEpoxyAdapter.java:19)
    at com.airbnb.epoxy.BaseEpoxyAdapter.onBindViewHolder(BaseEpoxyAdapter.java:19)
    at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7343)
    at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6204)
    at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6470)
    at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6310)
    at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6306)
    at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2330)
    at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1631)
    at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1591)
    at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:668)
    at com.airbnb.epoxy.stickyheader.StickyHeaderLinearLayoutManager.access$setScrollState(StickyHeaderLinearLayoutManager.java:29)
    at com.airbnb.epoxy.stickyheader.StickyHeaderLinearLayoutManager.access$scrollVerticallyBy$s-991726552(StickyHeaderLinearLayoutManager.java:29)
    at com.airbnb.epoxy.stickyheader.StickyHeaderLinearLayoutManager.access$findHeaderIndexOrNext(StickyHeaderLinearLayoutManager.java:29)
    at com.airbnb.epoxy.stickyheader.StickyHeaderLinearLayoutManager.access$getHeaderPositions$p(StickyHeaderLinearLayoutManager.java:29)
    at com.airbnb.epoxy.stickyheader.StickyHeaderLinearLayoutManager.access$computeVerticalScrollExtent$s-991726552(StickyHeaderLinearLayoutManager.java:29)
    at com.airbnb.epoxy.stickyheader.StickyHeaderLinearLayoutManager.access$onFocusSearchFailed$s-991726552(StickyHeaderLinearLayoutManager.java:29)
    at com.airbnb.epoxy.stickyheader.StickyHeaderLinearLayoutManager.access$onLayoutChildren$s-991726552(StickyHeaderLinearLayoutManager.java:29)
    at com.airbnb.epoxy.stickyheader.StickyHeaderLinearLayoutManager.access$scrapStickyHeader(StickyHeaderLinearLayoutManager.java:29)
    at com.airbnb.epoxy.stickyheader.StickyHeaderLinearLayoutManager$onLayoutChildren$1.invoke(StickyHeaderLinearLayoutManager.java:109)
    at com.airbnb.epoxy.stickyheader.StickyHeaderLinearLayoutManager$onLayoutChildren$1.invoke(StickyHeaderLinearLayoutManager.java:29)
    at com.airbnb.epoxy.stickyheader.StickyHeaderLinearLayoutManager.restoreView(StickyHeaderLinearLayoutManager.java:184)
    at com.airbnb.epoxy.stickyheader.StickyHeaderLinearLayoutManager.onLayoutChildren(StickyHeaderLinearLayoutManager.java:109)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4309)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4012)
    at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4578)
    at android.view.View.layout(View.java:23042)
    at android.view.ViewGroup.layout(ViewGroup.java:6419)
    at com.juejin.common.refresh.SmartRefreshLayout.onLayout(SmartRefreshLayout.java:648)
    at android.view.View.layout(View.java:23042)
    at android.view.ViewGroup.layout(ViewGroup.java:6419)
    at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1855)
    at android.view.View.layout(View.java:23042)
    at android.view.ViewGroup.layout(ViewGroup.java:6419)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
    at android.view.View.layout(View.java:23042)
    at android.view.ViewGroup.layout(ViewGroup.java:6419)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
    at android.view.View.layout(View.java:23042)
    at android.view.ViewGroup.layout(ViewGroup.java:6419)
    at androidx.recyclerview.widget.RecyclerView$LayoutManager.layoutDecoratedWithMargins(RecyclerView.java:9884)
    at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1689)
    at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1591)
    at androidx.recyclerview.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1395)
    at androidx.recyclerview.widget.LinearLayoutManager.scrollHorizontallyBy(LinearLayoutManager.java:1124)
    at androidx.recyclerview.widget.RecyclerView.scrollStep(RecyclerView.java:1969)
    at androidx.recyclerview.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:5476)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1352)
    at android.view.Choreographer.doCallbacks(Choreographer.java:1149)
    at android.view.Choreographer.doFrame(Choreographer.java:1040)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1333)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:233)
    at android.app.ActivityThread.main(ActivityThread.java:8030)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978)
elihart commented 2 years ago

you're on a very old version. reopen this if you can reproduce on the latest version - also make sure you are using the latest recyclerview version