谷歌RecyclerView内部Bug

xiaoxiao2021-02-27  102

java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{2f6e1841 position=7 id=-1, oldPos=-1, pLpos:-1 no parent} at android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:4855) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4986) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4967) at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2029) at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1414) at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1377) at android.support.v7.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1193) at android.support.v7.widget.LinearLayoutManager.scrollVerticallyBy(LinearLayoutManager.java:1043) at android.support.v7.widget.RecyclerView.scrollByInternal(RecyclerView.java:1596) at android.support.v7.widget.RecyclerView.onTouchEvent(RecyclerView.java:2704) at android.view.View.dispatchTouchEvent(View.java:8472) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2411) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2093) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2417) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2107) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2417) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2107) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2417) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2107) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2417) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2107) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2417) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2107) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2417) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2107) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2417) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2107) at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2446) at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1754) at android.app.Activity.dispatchTouchEvent(Activity.java:2860) at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:63) at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2385) at android.view.View.dispatchPointerEvent(View.java:8667) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4398) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4211) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3744) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3807) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3763) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3890) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3771) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3947) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3744) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3807) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3763) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3771) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3744) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6117) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6091)

靠,刚开始我还以为我的代码写的有问题,最后一查看,靠,控件BUG,谷歌大牛弄出来的BUG;但仔细查看BUG日志,越界,是什么导致越界呢?其实就是在我们刷新数据时,clean了数据导致List与RecyclerView数据不一至,那怎么解决呢?

其实解决方案很简单,我看了网上一大堆什么禁止RecyclerView的滑动来解决它,我也相当的无语了。其实解决办法,就是等我们把数据请求回来时,把之前的数据clean就可以了!

转载请注明原文地址: https://www.6miu.com/read-15095.html

最新回复(0)