Native Bug of Android RecyclerView-Inconsistency detected. Invalid view holder adapter positionViewHolder {a1bbfa3 position = 2 id =-1, oldPos =-1, pLpos:-1 no parent}, recyclerviewholder

Source: Internet
Author: User

Native Bug of Android RecyclerView-Inconsistency detected. Invalid view holder adapter positionViewHolder {a1bbfa3 position = 2 id =-1, oldPos =-1, pLpos:-1 no parent}, recyclerviewholder

Today, when I was running my own App, I suddenly found the App to crash while it was running. Then I checked the Log of Android Studio and found this error. I checked it online, this is the native Bug of RecyclerView. This Bug occurs when data is updated. The error is displayed

java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{431a7450 position=1 id=-1, oldPos=-1, pLpos:-1 scrap [attachedScrap] tmpDetached no parent}      at android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:4251)      at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4382)      at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4363)      at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1961)      at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1370)      at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1333)      at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:562)      at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2900)      at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3071)      at android.view.View.layout(View.java:14828)      at android.view.ViewGroup.layout(ViewGroup.java:4631)      at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:584)      at android.view.View.layout(View.java:14828)      at android.view.ViewGroup.layout(ViewGroup.java:4631)      at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)      at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)      at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)      at android.view.View.layout(View.java:14828)      at android.view.ViewGroup.layout(ViewGroup.java:4631)      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)      at android.widget.FrameLayout.onLayout(FrameLayout.java:388)      at android.view.View.layout(View.java:14828)      at android.view.ViewGroup.layout(ViewGroup.java:4631)      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)      at android.widget.FrameLayout.onLayout(FrameLayout.java:388)      at android.view.View.layout(View.java:14828)      at android.view.ViewGroup.layout(ViewGroup.java:4631)      at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1055)      at android.view.View.layout(View.java:14828)      at android.view.ViewGroup.layout(ViewGroup.java:4631)      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)      at android.widget.FrameLayout.onLayout(FrameLayout.java:388)      at android.view.View.layout(View.java:14828)      at android.view.ViewGroup.layout(ViewGroup.java:4631)      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)      at android.widget.FrameLayout.onLayout(FrameLayout.java:388)      at android.view.View.layout(View.java:14828)      at android.view.ViewGroup.layout(ViewGroup.java:4631)      at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)      at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)      at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)      at android.view.View.layout(View.java:14828)      at android.view.ViewGroup.layout(ViewGroup.java:4631)      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)      at android.widget.FrameLayout.onLayout(FrameLayout.java:388)      at android.view.View.layout(View.java:14828)      at android.view.ViewGroup.layout(ViewGroup.java:4631)      at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)      at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)      at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)      at android.view.View.layout(View.java:14828)      at android.view.ViewGroup.layout(ViewGroup.java:4631)      at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)      at android.widget.FrameLayout.onLayout(FrameLayout.java:388)      at android.view.View.layout(View.java:14828)      at android.view.ViewGroup.layout(ViewGroup.java:4631)      at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2074)      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1831)      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1087)      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5696)      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)      at android.view.Choreographer.doCallbacks(Choreographer.java:574)      at android.view.Choreographer.doFrame(Choreographer.java:544)      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)      at android.os.Handler.handleCallback(Handler.java:733)      at android.os.Handler.dispatchMessage(Handler.java:95)      at android.os.Looper.loop(Looper.java:136)      at android.app.ActivityThread.main(ActivityThread.java:5016)      at java.lang.reflect.Method.invokeNative(Native Method)      at java.lang.reflect.Method.invoke(Method.java:515)      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792)      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)      at dalvik.system.NativeStart.main(Native Method)  

I can see that the error does not refer to the code I wrote, so it is determined that it is a native Bug.

The solution to the error is to customize a LayoutManager and rewrite the onLayoutChildren method. In this case, an exception is thrown directly.

The code is

package com.zhangmiao.developmenthelperdemo;import android.content.Context;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.util.AttributeSet;/** * Created by zhangmiao on 2016/12/7. */public class MyContentLinearLayoutManager extends LinearLayoutManager {    public MyContentLinearLayoutManager(Context context){        super(context);    }    public MyContentLinearLayoutManager(Context context,int orientation,boolean reverseLayout){        super(context,orientation,reverseLayout);    }    public MyContentLinearLayoutManager(Context context,AttributeSet attrs, int defStyleAttr,int defStyleRes){        super(context, attrs, defStyleAttr, defStyleRes);    }    @Override    public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {        try {            super.onLayoutChildren(recycler, state);        }catch (IndexOutOfBoundsException e){            e.printStackTrace();        }    }}

Modify the setLayoutManager parameter of RecyclerView to WrapContentLinearLayoutManager.

The Code is as follows:

 recyclerView.setLayoutManager(new WrapContentLinearLayoutManager(mView.getContext()));

 

Reference: http://blog.csdn.net/lovexieyuan520/article/details/50537846

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.