У меня возникла досадная ошибка в моем Recyclerview
на Android.
Эта ошибка возникает на производстве примерно у 0,5% пользователей, я не смог воспроизвести ее на dev и, как это происходит при некоторых внутренних вызовах Android, я даже не могу поймать исключение, чтобы избежать сбоя приложения
exception
:
Неустранимое исключение: java.lang.IndexOutOfBoundsException: Несоответствие
обнаружено. Недопустимый адаптер держателя вида ViewViewHolder {bb8f997
position = 7 id = -1, oldPos = 8, pLpos: 7 записок [attachScrap] tmpDetached
нет родителя} android.support.v7.widget.RecyclerView {b200eda VFED.V ...
...... ID 0,146-684,423 # 7f0a0238 app: id / sponsorsRecyclerView},
адаптер: com.tomatedigital.giveawaymaster.a.f@78d6257,
расположение: android.support.v7.widget.GridLayoutManager@1739144,
Контекст: com.tomatedigital.giveawaymaster.activity.NewGiveawayAct@cc2874a
на android.support.v7.widget.RecyclerView $ Recycler.validateViewHolderForOffsetPosition (RecyclerView.java:5610)
на android.support.v7.widget.RecyclerView $ Recycler.tryGetViewHolderForPositionByDeadline (RecyclerView.java:5792)
на android.support.v7.widget.RecyclerView $ Recycler.getViewForPosition (RecyclerView.java:5752)
на android.support.v7.widget.RecyclerView $ Recycler.getViewForPosition (RecyclerView.java:5748)
на android.support.v7.widget.LinearLayoutManager $ LayoutState.next (LinearLayoutManager.java:2232)
на android.support.v7.widget.GridLayoutManager.layoutChunk (GridLayoutManager.java:556)
на android.support.v7.widget.LinearLayoutManager.fill (LinearLayoutManager.java:1519)
на android.support.v7.widget.LinearLayoutManager.onLayoutChildren (LinearLayoutManager.java:614)
на android.support.v7.widget.GridLayoutManager.onLayoutChildren (GridLayoutManager.java:170)
на android.support.v7.widget.RecyclerView.dispatchLayoutStep1 (RecyclerView.java:3763)
на android.support.v7.widget.RecyclerView.dispatchLayout (RecyclerView.java:3527)
на android.support.v7.widget.RecyclerView.onLayout (RecyclerView.java:4082)
на android.view.View.layout (View.java:21057)
на android.view.ViewGroup.layout (ViewGroup.java:6440)
на android.widget.LinearLayout.setChildFrame (LinearLayout.java:1791)
на android.widget.LinearLayout.layoutVertical (LinearLayout.java:1635)
на android.widget.LinearLayout.onLayout (LinearLayout.java:1544)
на android.view.View.layout (View.java:21057)
на android.view.ViewGroup.layout (ViewGroup.java:6440)
на android.support.v4.view.ViewPager.onLayout (ViewPager.java:1769)
на android.view.View.layout (View.java:21057)
на android.view.ViewGroup.layout (ViewGroup.java:6440)
на android.widget.LinearLayout.setChildFrame (LinearLayout.java:1791)
на android.widget.LinearLayout.layoutVertical (LinearLayout.java:1635)
на android.widget.LinearLayout.onLayout (LinearLayout.java:1544)
на android.view.View.layout (View.java:21057)
на android.view.ViewGroup.layout (ViewGroup.java:6440)
на android.widget.RelativeLayout.onLayout (RelativeLayout.java:1083)
на android.view.View.layout (View.java:21057)
на android.view.ViewGroup.layout (ViewGroup.java:6440)
на android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
на android.widget.FrameLayout.onLayout (FrameLayout.java:261)
на android.view.View.layout (View.java:21057)
на android.view.ViewGroup.layout (ViewGroup.java:6440)
на android.widget.LinearLayout.setChildFrame (LinearLayout.java:1791)
на android.widget.LinearLayout.layoutVertical (LinearLayout.java:1635)
на android.widget.LinearLayout.onLayout (LinearLayout.java:1544)на android.view.View.layout (View.java:21057)
на android.view.ViewGroup.layout (ViewGroup.java:6440)
на android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
на android.widget.FrameLayout.onLayout (FrameLayout.java:261)
на android.view.View.layout (View.java:21057)
на android.view.ViewGroup.layout (ViewGroup.java:6440)
на android.widget.LinearLayout.setChildFrame (LinearLayout.java:1791)
на android.widget.LinearLayout.layoutVertical (LinearLayout.java:1635)
на android.widget.LinearLayout.onLayout (LinearLayout.java:1544)
на android.view.View.layout (View.java:21057)
на android.view.ViewGroup.layout (ViewGroup.java:6440)
на android.widget.FrameLayout.layoutChildren (FrameLayout.java:323)
на android.widget.FrameLayout.onLayout (FrameLayout.java:261)
на com.android.internal.policy.DecorView.onLayout (DecorView.java:966)
на android.view.View.layout (View.java:21057)
на android.view.ViewGroup.layout (ViewGroup.java:6440)
на android.view.ViewRootImpl.performLayout (ViewRootImpl.java:3043)
на android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2730)
на android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1859)
на android.view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:8087)
на android.view.Choreographer $ CallbackRecord.run (Хореограф.java:911)
на android.view.Choreographer.doCallbacks (Choreographer.java:723)
на android.view.Choreographer.doFrame (Хореограф.java:658)
на android.view.Choreographer $ FrameDisplayEventReceiver.run (Choreographer.java:897)
на android.os.Handler.handleCallback (Handler.java:790)
на android.os.Handler.dispatchMessage (Handler.java:99)
на android.os.Looper.loop (Looper.java:164)
на android.app.ActivityThread.main (ActivityThread.java:7000)
в java.lang.reflect.Method.invoke (Method.java)
в com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java:441)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1408)
Извините, я не могу предоставить много информации, но ничего особенного с этим не делаю Recyclerview
...
пользователь может добавлять элементы в конец списка просмотра
или могу удалить предметы на любую позицию, какую захочет ... перед снятием я всегда проверяю, является ли позиция действительной
Я всегда добавляю и удаляю на mainthread
После добавления или удаления я вызываю определенные Recyclerview
методы, чтобы показать изменения.