lucasr / twoway-view

[DEPRECATED] RecyclerView made simple
5.23k stars 1.02k forks source link

IllegalStateException: Could not find span for position XX #135

Open jacek-marchwicki opened 9 years ago

jacek-marchwicki commented 9 years ago
java.lang.IllegalStateException: Could not find span for position 89
            at org.lucasr.twowayview.widget.StaggeredGridLayoutManager.getLaneSpanForPosition(StaggeredGridLayoutManager.java:104)
            at org.lucasr.twowayview.widget.ItemSpacingOffsets.isSecondLane(ItemSpacingOffsets.java:53)
            at org.lucasr.twowayview.widget.ItemSpacingOffsets.getItemOffsets(ItemSpacingOffsets.java:122)
            at org.lucasr.twowayview.widget.DividerItemDecoration.getItemOffsets(DividerItemDecoration.java:122)
            at android.support.v7.widget.RecyclerView$ItemDecoration.getItemOffsets(RecyclerView.java:6500)
            at android.support.v7.widget.RecyclerView.getItemDecorInsetsForChild(RecyclerView.java:2662)
            at android.support.v7.widget.RecyclerView$LayoutManager.measureChildWithMargins(RecyclerView.java:5434)
            at org.lucasr.twowayview.widget.BaseLayoutManager.measureChildWithMargins(BaseLayoutManager.java:424)
            at org.lucasr.twowayview.widget.BaseLayoutManager.measureChild(BaseLayoutManager.java:430)
            at org.lucasr.twowayview.TwoWayLayoutManager.setupChild(TwoWayLayoutManager.java:461)
            at org.lucasr.twowayview.TwoWayLayoutManager.makeAndAddView(TwoWayLayoutManager.java:473)
            at org.lucasr.twowayview.TwoWayLayoutManager.fillBefore(TwoWayLayoutManager.java:253)
            at org.lucasr.twowayview.TwoWayLayoutManager.fillGap(TwoWayLayoutManager.java:240)
            at org.lucasr.twowayview.TwoWayLayoutManager.scrollBy(TwoWayLayoutManager.java:226)
            at org.lucasr.twowayview.TwoWayLayoutManager.scrollVerticallyBy(TwoWayLayoutManager.java:780)
            at android.support.v7.widget.RecyclerView.scrollByInternal(RecyclerView.java:915)
            at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:1616)
            at android.view.View.dispatchTouchEvent(View.java:7706)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2210)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1945)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2068)
            at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1515)
            at android.app.Activity.dispatchTouchEvent(Activity.java:2458)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2016)
            at android.view.View.dispatchPointerEvent(View.java:7886)
            at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3947)
            at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3826)
            at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
            at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
            at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
            at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3518)
            at android.view.ViewRootImpl$InputStage.apply(Vi

To reproduce issue you can use https://github.com/jacek-marchwicki/twoway-view/tree/bug1-reproducer Go to staggered item tab and scroll to the down of the list, a little up, down.. and should be quite easy to reproduce.

joshln87 commented 9 years ago

i'm facing the same problem as well. Could it be because of the handleAdapterChanges method which clears the entries cache?

lucasr commented 9 years ago

FYI: I've fixed this specific crash in 7e24609f58a38dc623c5acb8a797e2fc5e8847be but I'm still seeing crashes for a different reason. Keeping this open for now.