RecyclerView异常

先上异常日志,如下:
2019-12-11 16:11:25.029 4626-4626/com.xxx.xxx E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.xxx.xxx, PID: 4626
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{36bdec2 position=1 id=-1, oldPos=1, pLpos:-1 scrap [attachedScrap] tmpDetached no parent} androidx.recyclerview.widget.RecyclerView{8434e1f VFED… …I. 0,0-720,935 #7f080128 app:id/rcv_file_list}, adapter:com.xxx.xxx.mvp.ui.adapter.PictureAdapter@16fe56c, layout:androidx.recyclerview.widget.GridLayoutManager@213c735, context:com.xxx.xxx.mvp.ui.activity.photoedit.PictureManagerActivity@9afd93
at androidx.recyclerview.widget.RecyclerView R e c y c l e r . v a l i d a t e V i e w H o l d e r F o r O f f s e t P o s i t i o n ( R e c y c l e r V i e w . j a v a : 5715 ) a t a n d r o i d x . r e c y c l e r v i e w . w i d g e t . R e c y c l e r V i e w Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:5715) at androidx.recyclerview.widget.RecyclerView Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:5715)atandroidx.recyclerview.widget.RecyclerViewRecycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5898)
at androidx.recyclerview.widget.RecyclerView R e c y c l e r . g e t V i e w F o r P o s i t i o n ( R e c y c l e r V i e w . j a v a : 5858 ) a t a n d r o i d x . r e c y c l e r v i e w . w i d g e t . R e c y c l e r V i e w Recycler.getViewForPosition(RecyclerView.java:5858) at androidx.recyclerview.widget.RecyclerView Recycler.getViewForPosition(RecyclerView.java:5858)atandroidx.recyclerview.widget.RecyclerViewRecycler.getViewForPosition(RecyclerView.java:5854)
at androidx.recyclerview.widget.LinearLayoutManager L a y o u t S t a t e . n e x t ( L i n e a r L a y o u t M a n a g e r . j a v a : 2230 ) a t a n d r o i d x . r e c y c l e r v i e w . w i d g e t . G r i d L a y o u t M a n a g e r . l a y o u t C h u n k ( G r i d L a y o u t M a n a g e r . j a v a : 557 ) a t a n d r o i d x . r e c y c l e r v i e w . w i d g e t . L i n e a r L a y o u t M a n a g e r . f i l l ( L i n e a r L a y o u t M a n a g e r . j a v a : 1517 ) a t a n d r o i d x . r e c y c l e r v i e w . w i d g e t . L i n e a r L a y o u t M a n a g e r . o n L a y o u t C h i l d r e n ( L i n e a r L a y o u t M a n a g e r . j a v a : 612 ) a t a n d r o i d x . r e c y c l e r v i e w . w i d g e t . G r i d L a y o u t M a n a g e r . o n L a y o u t C h i l d r e n ( G r i d L a y o u t M a n a g e r . j a v a : 171 ) a t a n d r o i d x . r e c y c l e r v i e w . w i d g e t . R e c y c l e r V i e w . d i s p a t c h L a y o u t S t e p 1 ( R e c y c l e r V i e w . j a v a : 3875 ) a t a n d r o i d x . r e c y c l e r v i e w . w i d g e t . R e c y c l e r V i e w . d i s p a t c h L a y o u t ( R e c y c l e r V i e w . j a v a : 3639 ) a t a n d r o i d x . r e c y c l e r v i e w . w i d g e t . R e c y c l e r V i e w . o n L a y o u t ( R e c y c l e r V i e w . j a v a : 4194 ) a t a n d r o i d . v i e w . V i e w . l a y o u t ( V i e w . j a v a : 19602 ) a t a n d r o i d . v i e w . V i e w G r o u p . l a y o u t ( V i e w G r o u p . j a v a : 6057 ) a t a n d r o i d x . s w i p e r e f r e s h l a y o u t . w i d g e t . S w i p e R e f r e s h L a y o u t . o n L a y o u t ( S w i p e R e f r e s h L a y o u t . j a v a : 625 ) a t a n d r o i d . v i e w . V i e w . l a y o u t ( V i e w . j a v a : 19602 ) a t a n d r o i d . v i e w . V i e w G r o u p . l a y o u t ( V i e w G r o u p . j a v a : 6057 ) a t a n d r o i d . w i d g e t . F r a m e L a y o u t . l a y o u t C h i l d r e n ( F r a m e L a y o u t . j a v a : 323 ) a t a n d r o i d . w i d g e t . F r a m e L a y o u t . o n L a y o u t ( F r a m e L a y o u t . j a v a : 261 ) a t a n d r o i d . v i e w . V i e w . l a y o u t ( V i e w . j a v a : 19602 ) a t a n d r o i d . v i e w . V i e w G r o u p . l a y o u t ( V i e w G r o u p . j a v a : 6057 ) a t a n d r o i d . w i d g e t . L i n e a r L a y o u t . s e t C h i l d F r a m e ( L i n e a r L a y o u t . j a v a : 1791 ) a t a n d r o i d . w i d g e t . L i n e a r L a y o u t . l a y o u t V e r t i c a l ( L i n e a r L a y o u t . j a v a : 1635 ) a t a n d r o i d . w i d g e t . L i n e a r L a y o u t . o n L a y o u t ( L i n e a r L a y o u t . j a v a : 1544 ) a t a n d r o i d . v i e w . V i e w . l a y o u t ( V i e w . j a v a : 19602 ) a t a n d r o i d . v i e w . V i e w G r o u p . l a y o u t ( V i e w G r o u p . j a v a : 6057 ) a t a n d r o i d . w i d g e t . F r a m e L a y o u t . l a y o u t C h i l d r e n ( F r a m e L a y o u t . j a v a : 323 ) a t a n d r o i d . w i d g e t . F r a m e L a y o u t . o n L a y o u t ( F r a m e L a y o u t . j a v a : 261 ) a t a n d r o i d . v i e w . V i e w . l a y o u t ( V i e w . j a v a : 19602 ) a t a n d r o i d . v i e w . V i e w G r o u p . l a y o u t ( V i e w G r o u p . j a v a : 6057 ) a t a n d r o i d . w i d g e t . L i n e a r L a y o u t . s e t C h i l d F r a m e ( L i n e a r L a y o u t . j a v a : 1791 ) a t a n d r o i d . w i d g e t . L i n e a r L a y o u t . l a y o u t V e r t i c a l ( L i n e a r L a y o u t . j a v a : 1635 ) a t a n d r o i d . w i d g e t . L i n e a r L a y o u t . o n L a y o u t ( L i n e a r L a y o u t . j a v a : 1544 ) a t a n d r o i d . v i e w . V i e w . l a y o u t ( V i e w . j a v a : 19602 ) a t a n d r o i d . v i e w . V i e w G r o u p . l a y o u t ( V i e w G r o u p . j a v a : 6057 ) a t a n d r o i d . w i d g e t . F r a m e L a y o u t . l a y o u t C h i l d r e n ( F r a m e L a y o u t . j a v a : 323 ) a t a n d r o i d . w i d g e t . F r a m e L a y o u t . o n L a y o u t ( F r a m e L a y o u t . j a v a : 261 ) a t a n d r o i d . v i e w . V i e w . l a y o u t ( V i e w . j a v a : 19602 ) a t a n d r o i d . v i e w . V i e w G r o u p . l a y o u t ( V i e w G r o u p . j a v a : 6057 ) a t a n d r o i d . w i d g e t . L i n e a r L a y o u t . s e t C h i l d F r a m e ( L i n e a r L a y o u t . j a v a : 1791 ) a t a n d r o i d . w i d g e t . L i n e a r L a y o u t . l a y o u t V e r t i c a l ( L i n e a r L a y o u t . j a v a : 1635 ) a t a n d r o i d . w i d g e t . L i n e a r L a y o u t . o n L a y o u t ( L i n e a r L a y o u t . j a v a : 1544 ) a t a n d r o i d . v i e w . V i e w . l a y o u t ( V i e w . j a v a : 19602 ) a t a n d r o i d . v i e w . V i e w G r o u p . l a y o u t ( V i e w G r o u p . j a v a : 6057 ) a t a n d r o i d . w i d g e t . F r a m e L a y o u t . l a y o u t C h i l d r e n ( F r a m e L a y o u t . j a v a : 323 ) a t a n d r o i d . w i d g e t . F r a m e L a y o u t . o n L a y o u t ( F r a m e L a y o u t . j a v a : 261 ) a t c o m . a n d r o i d . i n t e r n a l . p o l i c y . D e c o r V i e w . o n L a y o u t ( D e c o r V i e w . j a v a : 758 ) a t a n d r o i d . v i e w . V i e w . l a y o u t ( V i e w . j a v a : 19602 ) a t a n d r o i d . v i e w . V i e w G r o u p . l a y o u t ( V i e w G r o u p . j a v a : 6057 ) a t a n d r o i d . v i e w . V i e w R o o t I m p l . p e r f o r m L a y o u t ( V i e w R o o t I m p l . j a v a : 2512 ) 2019 − 12 − 1116 : 11 : 25.0304626 − 4626 / c o m . x x x . x x x E / A n d r o i d R u n t i m e : a t a n d r o i d . v i e w . V i e w R o o t I m p l . p e r f o r m T r a v e r s a l s ( V i e w R o o t I m p l . j a v a : 2228 ) a t a n d r o i d . v i e w . V i e w R o o t I m p l . d o T r a v e r s a l ( V i e w R o o t I m p l . j a v a : 1414 ) a t a n d r o i d . v i e w . V i e w R o o t I m p l LayoutState.next(LinearLayoutManager.java:2230) at androidx.recyclerview.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:557) at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517) at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612) at androidx.recyclerview.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:171) at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:3875) at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3639) at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4194) at android.view.View.layout(View.java:19602) at android.view.ViewGroup.layout(ViewGroup.java:6057) at androidx.swiperefreshlayout.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:625) at android.view.View.layout(View.java:19602) at android.view.ViewGroup.layout(ViewGroup.java:6057) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:19602) at android.view.ViewGroup.layout(ViewGroup.java:6057) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635) at android.widget.LinearLayout.onLayout(LinearLayout.java:1544) at android.view.View.layout(View.java:19602) at android.view.ViewGroup.layout(ViewGroup.java:6057) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:19602) at android.view.ViewGroup.layout(ViewGroup.java:6057) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635) at android.widget.LinearLayout.onLayout(LinearLayout.java:1544) at android.view.View.layout(View.java:19602) at android.view.ViewGroup.layout(ViewGroup.java:6057) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:19602) at android.view.ViewGroup.layout(ViewGroup.java:6057) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1791) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1635) at android.widget.LinearLayout.onLayout(LinearLayout.java:1544) at android.view.View.layout(View.java:19602) at android.view.ViewGroup.layout(ViewGroup.java:6057) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at com.android.internal.policy.DecorView.onLayout(DecorView.java:758) at android.view.View.layout(View.java:19602) at android.view.ViewGroup.layout(ViewGroup.java:6057) at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2512) 2019-12-11 16:11:25.030 4626-4626/com.xxx.xxx E/AndroidRuntime: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2228) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1414) at android.view.ViewRootImpl LayoutState.next(LinearLayoutManager.java:2230)atandroidx.recyclerview.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:557)atandroidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517)atandroidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612)atandroidx.recyclerview.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:171)atandroidx.recyclerview.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:3875)atandroidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3639)atandroidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4194)atandroid.view.View.layout(View.java:19602)atandroid.view.ViewGroup.layout(ViewGroup.java:6057)atandroidx.swiperefreshlayout.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:625)atandroid.view.View.layout(View.java:19602)atandroid.view.ViewGroup.layout(ViewGroup.java:6057)atandroid.widget.FrameLayout.layoutChildren(FrameLayout.java:323)atandroid.widget.FrameLayout.onLayout(FrameLayout.java:261)atandroid.view.View.layout(View.java:19602)atandroid.view.ViewGroup.layout(ViewGroup.java:6057)atandroid.widget.LinearLayout.setChildFrame(LinearLayout.java:1791)atandroid.widget.LinearLayout.layoutVertical(LinearLayout.java:1635)atandroid.widget.LinearLayout.onLayout(LinearLayout.java:1544)atandroid.view.View.layout(View.java:19602)atandroid.view.ViewGroup.layout(ViewGroup.java:6057)atandroid.widget.FrameLayout.layoutChildren(FrameLayout.java:323)atandroid.widget.FrameLayout.onLayout(FrameLayout.java:261)atandroid.view.View.layout(View.java:19602)atandroid.view.ViewGroup.layout(ViewGroup.java:6057)atandroid.widget.LinearLayout.setChildFrame(LinearLayout.java:1791)atandroid.widget.LinearLayout.layoutVertical(LinearLayout.java:1635)atandroid.widget.LinearLayout.onLayout(LinearLayout.java:1544)atandroid.view.View.layout(View.java:19602)atandroid.view.ViewGroup.layout(ViewGroup.java:6057)atandroid.widget.FrameLayout.layoutChildren(FrameLayout.java:323)atandroid.widget.FrameLayout.onLayout(FrameLayout.java:261)atandroid.view.View.layout(View.java:19602)atandroid.view.ViewGroup.layout(ViewGroup.java:6057)atandroid.widget.LinearLayout.setChildFrame(LinearLayout.java:1791)atandroid.widget.LinearLayout.layoutVertical(LinearLayout.java:1635)atandroid.widget.LinearLayout.onLayout(LinearLayout.java:1544)atandroid.view.View.layout(View.java:19602)atandroid.view.ViewGroup.layout(ViewGroup.java:6057)atandroid.widget.FrameLayout.layoutChildren(FrameLayout.java:323)atandroid.widget.FrameLayout.onLayout(FrameLayout.java:261)atcom.android.internal.policy.DecorView.onLayout(DecorView.java:758)atandroid.view.View.layout(View.java:19602)atandroid.view.ViewGroup.layout(ViewGroup.java:6057)atandroid.view.ViewRootImpl.performLayout(ViewRootImpl.java:2512)2019121116:11:25.03046264626/com.xxx.xxxE/AndroidRuntime:atandroid.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2228)atandroid.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1414)atandroid.view.ViewRootImplTraversalRunnable.run(ViewRootImpl.java:6827)
at android.view.Choreographer C a l l b a c k R e c o r d . r u n ( C h o r e o g r a p h e r . j a v a : 911 ) a t a n d r o i d . v i e w . C h o r e o g r a p h e r . d o C a l l b a c k s ( C h o r e o g r a p h e r . j a v a : 723 ) a t a n d r o i d . v i e w . C h o r e o g r a p h e r . d o F r a m e ( C h o r e o g r a p h e r . j a v a : 658 ) a t a n d r o i d . v i e w . C h o r e o g r a p h e r CallbackRecord.run(Choreographer.java:911) at android.view.Choreographer.doCallbacks(Choreographer.java:723) at android.view.Choreographer.doFrame(Choreographer.java:658) at android.view.Choreographer CallbackRecord.run(Choreographer.java:911)atandroid.view.Choreographer.doCallbacks(Choreographer.java:723)atandroid.view.Choreographer.doFrame(Choreographer.java:658)atandroid.view.ChoreographerFrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6592)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)

解决方法:
重写GridLayoutManager类,将其中的onLayoutChildren()进行异常捕获即可:

@Override
public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
    try {
        super.onLayoutChildren(recycler, state);
    } catch (IndexOutOfBoundsException e) {
        e.printStackTrace();
        Logger.e("meet a IOOBE in RecyclerView");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值