Android RecycleView Исключение - PullRequest
0 голосов
/ 17 апреля 2019

У меня возникла досадная ошибка в моем 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 методы, чтобы показать изменения.

...