cymcsg / UltimateRecyclerView

A RecyclerView(advanced and flexible version of ListView in Android) with refreshing,loading more,animation and many other features.
Apache License 2.0
7.22k stars 1.43k forks source link

"Inconsistency detected. Invalid view holder adapter positionViewHolder" #403

Closed snakeice closed 8 years ago

snakeice commented 8 years ago

Hello.. I am suffering with this problem for a long time ... But I can not find a solution, I found some tips that could be notifyItemRange*, but don't use it in my code.

java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{5f0faf2 position=1 id=-1, oldPos=1, pLpos:-1 scrap [attachedScrap] tmpDetached no parent} 'Troca de informações/experiencias JB Importador -  Exportações e importações de dados'
    at android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:4801)
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4932)
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4913)
    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.onLayoutChildren(LinearLayoutManager.java:578)
    at android.support.v7.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:3211)
    at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3067)
    at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3518)
    at android.view.View.layout(View.java:16668)
    at android.view.ViewGroup.layout(ViewGroup.java:5439)
    at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:598)
    at android.view.View.layout(View.java:16668)
    at android.view.ViewGroup.layout(ViewGroup.java:5439)
    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
    at android.view.View.layout(View.java:16668)
    at android.view.ViewGroup.layout(ViewGroup.java:5439)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
    at android.view.View.layout(View.java:16668)
    at android.view.ViewGroup.layout(ViewGroup.java:5439)
    at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1092)
    at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:802)
    at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:816)
    at android.view.View.layout(View.java:16668)
    at android.view.ViewGroup.layout(ViewGroup.java:5439)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
    at android.view.View.layout(View.java:16668)
    at android.view.ViewGroup.layout(ViewGroup.java:5439)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
    at android.view.View.layout(View.java:16668)
    at android.view.ViewGroup.layout(ViewGroup.java:5439)
    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1079)
    at android.view.View.layout(View.java:16668)
    at android.view.ViewGroup.layout(ViewGroup.java:5439)
    at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1191)
    at android.view.View.layout(View.java:16668)
    at android.view.ViewGroup.layout(ViewGroup.java:5439)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
    at android.view.View.layout(View.java:16668)
    at android.view.ViewGroup.layout(ViewGroup.java:5439)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
    at android.view.View.layout(View.java:16668)
    at android.view.ViewGroup.layout(ViewGroup.java:5439)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
    at android.view.View.layout(View.java:16668)
    at android.view.ViewGroup.layout(ViewGroup.java:5439)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
    at android.view.View.layout(View.java:16668)
    at android.view.ViewGroup.layout(ViewGroup.java:5439)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
    at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2720)
    at android.view.View.layout(View.java:16668)
    at android.view.ViewGroup.layout(ViewGroup.java:5439)
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2202)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1955)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1125)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6100)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
    at android.view.Choreographer.doCallbacks(Choreographer.java:670)
    at android.view.Choreographer.doFrame(Choreographer.java:606)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5525)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
cymcsg commented 8 years ago

Could you show more of your code?

snakeice commented 8 years ago

I believe the problem is happening here

    public void refreshItem(viewHolder item) {
        L.i("Refeshing UI view -> " + item.toString());
        if (adapter.getItemCount() > item.getLayoutPosition()) {
            item.swipeLayout.close();
            adapter.closeItem(item.getLayoutPosition());
            adapter.notifyItemChanged(item.getLayoutPosition());
        }
        cancelTimer(item);
    }

In the line > adapter.notifyItemChanged(item.getLayoutPosition());

castrojr913 commented 8 years ago

@Snakeice which version do I find the fix? I have used the latest 0.7.0 and a similar exception is thrown

snakeice commented 8 years ago

@castrojr913 Hello .. I'm using version 1.2.0 .. Do not know what it happened, simply did not occur more .. I believe it was something I did in the code of my application