-5

Je charge normalement le recycleur et les données s'affichent correctement. Mais j'ai l'obligation de recréer mon actvity à certaines conditions. Lorsque je recrée mon activité, la vue Recycler est initialisée à nouveau et est chargée avec un nouvel ensemble de données. Mais cette fois, j'ai un accident. Voici les journaux. Toute aide sera grandement appréciée.. !!!Crash avec mise en page décalée Gestionnaire de Recycler Afficher

Fatal Exception: java.lang.ArrayIndexOutOfBoundsException: start < 0 || end > len. start=-1, end=11, len=11 
     at java.util.Arrays.checkStartAndEnd(Arrays.java:1732) 
     at java.util.Arrays.fill(Arrays.java:803) 
     at android.support.v7.widget.StaggeredGridLayoutManager$LazySpanLookup.invalidateAfter(StaggeredGridLayoutManager.java:2652) 
     at android.support.v7.widget.StaggeredGridLayoutManager.handleUpdate(StaggeredGridLayoutManager.java:1496) 
     at android.support.v7.widget.StaggeredGridLayoutManager.onItemsUpdated(StaggeredGridLayoutManager.java:1472) 
     at android.support.v7.widget.RecyclerView$6.dispatchUpdate(RecyclerView.java:781) 
     at android.support.v7.widget.RecyclerView$6.onDispatchFirstPass(RecyclerView.java:769) 
     at android.support.v7.widget.AdapterHelper.dispatchFirstPassAndUpdateViewHolders(AdapterHelper.java:316) 
     at android.support.v7.widget.AdapterHelper.dispatchAndUpdateViewHolders(AdapterHelper.java:302) 
     at android.support.v7.widget.AdapterHelper.applyUpdate(AdapterHelper.java:222) 
     at android.support.v7.widget.AdapterHelper.preProcess(AdapterHelper.java:106) 
     at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1492) 
     at android.support.v7.widget.RecyclerView.access$400(RecyclerView.java:151) 
     at android.support.v7.widget.RecyclerView$1.run(RecyclerView.java:305) 
     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 
     at android.view.Choreographer.doCallbacks(Choreographer.java:670) 
     at android.view.Choreographer.doFrame(Choreographer.java:603) 
     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:5417) 
     at java.lang.reflect.Method.invoke(Method.java) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
+0

vous obtenez un ** ArrayIndexOutOfBoundsException **. Cela signifie que vous essayez d'accéder à un élément de tableau qui n'existe pas dans le tableau. Une question similaire a été résolue ici - http://stackoverflow.com/questions/35577548/recycler-view-fatal-exception-java-lang-arrayindexoutofboundsexception – Ash

+0

et ce qui n'est pas clair dans le message d'erreur 'java.lang.ArrayIndexOutOfBoundsException : commencez < 0 || end > len. début = -1, fin = 11, len = 11'? –

+0

Je ne fais rien d'inhabituel. Même si je suis toujours en train de s'écraser. – user3492435

Répondre

0

Dans mon cas, j'essayais de notifierItemChanged (Default_pos), où Default_pos était -1 qui n'existe pas.

Par conséquent j'obtenais ArrayIndexOutOfBound.

0

lorsque vous êtes essayer de recréer votre activity, RecyclerView toujours en essayant d'afficher view items et ComputingLayout

RecyclerView est dans un état de verrouillage et toute tentative de mettre à jour l'adaptateur contenu entraînera une exception

Solution

  • Vous devriez juste reporter recreate activity en utilisant un gestionnaire.
  • Vérifiez RecyclerView.isComputingLayout() doit renvoyer false avant d'effectuer votre changement.

For more details Check my answer