2015-05-26 16 views
6

मैंने क्रैशलिटिक्स पर इस क्रैश की रिपोर्ट करना शुरू कर दिया है। मुझे नहीं पता कि इसे पुन: पेश कैसे किया जाए, लेकिन यह सभी RecyclerView के लिए आंतरिक कोड प्रतीत होता है। मुझे लगता है कि यह RecyclerView से आता है जो मैंने वास्तव में कभी नहीं बदला है। उपयोगकर्ता इसे रीफ्रेश कर सकता है लेकिन फिर सभी आइटम बदल दिए जाते हैं और notifyDataSetChanged कहा जाता है।पुनर्चक्रण दृश्य: java.lang.IndexOutOfBoundsException: असंगतता का पता चला। अमान्य आइटम स्थिति

java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 5(offset:5).state:7 
     at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4041) 
     at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3999) 
     at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1892) 
     at android.support.v7.widget.GridLayoutManager.layoutChunk(GridLayoutManager.java:419) 
     at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1301) 
     at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:534) 
     at android.support.v7.widget.GridLayoutManager.onLayoutChildren(GridLayoutManager.java:156) 
     at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2365) 
     at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:2709) 
     at android.view.View.layout(View.java:15125) 
     at android.view.ViewGroup.layout(ViewGroup.java:4862) 
     at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1160) 
     at android.view.View.layout(View.java:15125) 
     at android.view.ViewGroup.layout(ViewGroup.java:4862) 
     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888) 
     at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1877) 
     at android.widget.LinearLayout.onLayout(LinearLayout.java:1653) 
     at android.view.View.layout(View.java:15125) 
     at android.view.ViewGroup.layout(ViewGroup.java:4862) 
     at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1160) 
     at android.view.View.layout(View.java:15125) 
     at android.view.ViewGroup.layout(ViewGroup.java:4862) 
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515) 
     at android.widget.FrameLayout.onLayout(FrameLayout.java:450) 
     at android.view.View.layout(View.java:15125) 
     at android.view.ViewGroup.layout(ViewGroup.java:4862) 
     at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:907) 
     at android.view.View.layout(View.java:15125) 
     at android.view.ViewGroup.layout(ViewGroup.java:4862) 
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515) 
     at android.widget.FrameLayout.onLayout(FrameLayout.java:450) 
     at android.view.View.layout(View.java:15125) 
     at android.view.ViewGroup.layout(ViewGroup.java:4862) 
     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888) 
     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742) 
     at android.widget.LinearLayout.onLayout(LinearLayout.java:1651) 
     at android.view.View.layout(View.java:15125) 
     at android.view.ViewGroup.layout(ViewGroup.java:4862) 
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515) 
     at android.widget.FrameLayout.onLayout(FrameLayout.java:450) 
     at android.view.View.layout(View.java:15125) 
     at android.view.ViewGroup.layout(ViewGroup.java:4862) 
     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888) 
     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742) 
     at android.widget.LinearLayout.onLayout(LinearLayout.java:1651) 
     at android.view.View.layout(View.java:15125) 
     at android.view.ViewGroup.layout(ViewGroup.java:4862) 
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515) 
     at android.widget.FrameLayout.onLayout(FrameLayout.java:450) 
     at android.view.View.layout(View.java:15125) 
     at android.view.ViewGroup.layout(ViewGroup.java:4862) 
     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2325) 
     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2031) 
     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1191) 
     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6233) 
     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:788) 
     at android.view.Choreographer.doCallbacks(Choreographer.java:591) 
     at android.view.Choreographer.doFrame(Choreographer.java:560) 
     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:774) 
     at android.os.Handler.handleCallback(Handler.java:808) 
     at android.os.Handler.dispatchMessage(Handler.java:103) 
     at android.os.Looper.loop(Looper.java:193) 
     at android.app.ActivityThread.main(ActivityThread.java:5296) 
     at java.lang.reflect.Method.invokeNative(Method.java) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) 
     at dalvik.system.NativeStart.main(NativeStart.java) 
+0

क्या आप जानते हैं कि कौन सा रीसाइक्लिंग व्यू इसका कारण बनता है? यदि ऐसा है, तो कृपया – Kelevandos

+0

के लिए एडाप्टर कोड प्रदान करें, उसे एक ही क्रैश मिला। http://stackoverflow.com/questions/26827222/how-to-change-contents-of-recyclerview-while-scrolling – wisemann

+0

आप सही हैं, मैंने सही खोज नहीं की होगी। यह मेरे 22.1 एपकंपैट अपडेट के बाद बस शुरू हो रहा है, इसलिए मुझे लगता है कि यह एक बग है। – casolorz

उत्तर

0

अपनी खुद की LinearLayoutManager बनाएँ।

CustomLinearLayoutManager.java

public class CustomLinearLayoutManager extends LinearLayoutManager { 

    @Override 
    public boolean supportsPredictiveItemAnimations() { 
     return false; 
    } 

    public CustomLinearLayoutManager(Context context) { 
     super(context); 
    } 

    public CustomLinearLayoutManager(Context context, int orientation, boolean reverseLayout) { 
     super(context, orientation, reverseLayout); 
    } 

    public CustomLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 
     super(context, attrs, defStyleAttr, defStyleRes); 
    } 
} 

कैसे RecyclerView पर CustomLinearLayoutManager स्थापित करने के लिए।

CustomLinearLayoutManager customLinearLayoutManager= new HPLinearLayoutManager(mContext); 
recyclerView.setLayoutManager(customLinearLayoutManager); 

आशा है कि यह आपका समय बचाएगा।

+0

यह दृश्य खाली होने का कारण बनता है। –

3

मुझे इस समस्या के साथ एक ही समस्या है, मैं इसे खोजने और हल करने के लिए बहुत थक गया हूं। लेकिन मुझे हल करने का जवाब मिला है और अपवादों को फिर से बाहर नहीं फेंक दिया गया है।

public class MyLinearLayoutManager extends LinearLayoutManager { 
    public MyLinearLayoutManager(Context context) { 
     super(context); 
    } 

    public MyLinearLayoutManager(Context context, int orientation, boolean reverseLayout) { 
     super(context, orientation, reverseLayout); 
    } 

    public MyLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 
     super(context, attrs, defStyleAttr, defStyleRes); 
    } 

    @Override 
    public boolean supportsPredictiveItemAnimations() { 
     return false; 
    } 

    @Override 
    public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) { 
     //override this method and implement code as below 
     try { 
      super.onLayoutChildren(recycler, state); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } } 

मुझे आशा है कि यह उत्तर आपकी समस्या का समाधान करेगा।

संबंधित मुद्दे