Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CollectionView: Adding groups leads to "IndexOutOfBoundsException: Inconsistency detected" #22638

Open
markusroessler opened this issue May 24, 2024 · 5 comments
Labels
area-controls-collectionview CollectionView, CarouselView, IndicatorView platform/android 🤖 t/bug Something isn't working
Milestone

Comments

@markusroessler
Copy link

markusroessler commented May 24, 2024

Description

Adding groups to a CollectionView sometimes leads to a IndexOutOfBoundsException - see "Log output" for complete stacktrace.

Steps to Reproduce

  1. Clone https://github.com/markusroessler/MauiCollectionViewInconsistencyDetected
  2. Start the app
  3. Click the "Add Items"-Button and scroll to the bottom (two new groups should appear at the bottom after each click)
  4. Repeat step 3 until the exception occurs (usually happens on the second try)

Link to public reproduction project repository

https://github.com/markusroessler/MauiCollectionViewInconsistencyDetected

Version with bug

8.0.40 SR5

Is this a regression from previous behavior?

Yes, this used to work in Xamarin.Forms

Last version that worked well

Unknown/Other

Affected platforms

Android

Affected platform versions

Android 10

Did you find any workaround?

Recreate the ItemsSource/ObservableCollection instead of adding items to the existing one. Performance will obviously be worse when doing this.

Relevant log output

Java.Lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionTemplatedItemViewHolder{6257c03 position=31 id=-1, oldPos=25, pLpos:25 scrap [attachedScrap] tmpDetached no parent} crc645d80431ce5f73f11.MauiRecyclerView_3{caadd54 VFED..... ......I. 0,121-1080,1988}, adapter:crc645d80431ce5f73f11.ReorderableItemsViewAdapter_2@a5ca3ee, layout:androidx.recyclerview.widget.LinearLayoutManager@6ea4384, context:crc64e550a20d138f04c9.MainActivity@6bea620
  at Java.Interop.JniEnvironment.StaticMethods.CallStaticLongMethod(JniObjectReference type, JniMethodInfo method, JniArgumentValue* args) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/obj/Release/net7.0/JniEnvironment.g.cs:21705
  at Java.Interop.JniPeerMembers.JniStaticMethods.InvokeInt64Method(String encodedMember, JniArgumentValue* parameters) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniStaticMethods.cs:147
  at Microsoft.Maui.PlatformInterop.MeasureAndGetWidthAndHeight(View view, Int32 widthMeasureSpec, Int32 heightMeasureSpec) in D:\a\_work\1\s\artifacts\obj\Core\Release\net8.0-android\generated\src\Microsoft.Maui.PlatformInterop.cs:580
  at Microsoft.Maui.ViewHandlerExtensions.GetDesiredSizeFromHandler(IViewHandler viewHandler, Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Core\src\Handlers\ViewHandlerExtensions.Android.cs:93
  at Microsoft.Maui.Handlers.ViewHandler`2[[Microsoft.Maui.Controls.ReorderableItemsView, Microsoft.Maui.Controls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[AndroidX.RecyclerView.Widget.RecyclerView, Xamarin.AndroidX.RecyclerView, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].GetDesiredSize(Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Core\src\Handlers\View\ViewHandlerOfT.Android.cs:18
  at Microsoft.Maui.Controls.Handlers.Items.ItemsViewHandler`1[[Microsoft.Maui.Controls.ReorderableItemsView, Microsoft.Maui.Controls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].GetDesiredSize(Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Controls\src\Core\Handlers\Items\ItemsViewHandler.Android.cs:49
  at Microsoft.Maui.Layouts.LayoutExtensions.ComputeDesiredSize(IView view, Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Core\src\Layouts\LayoutExtensions.cs:27
  at Microsoft.Maui.Controls.VisualElement.MeasureOverride(Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Controls\src\Core\VisualElement\VisualElement.cs:1893
  at Microsoft.Maui.Controls.VisualElement.Microsoft.Maui.IView.Measure(Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Controls\src\Core\VisualElement\VisualElement.cs:1880
  at Microsoft.Maui.Layouts.GridLayoutManager.GridStructure.MeasureCell(Cell cell, Double width, Double height) in D:\a\_work\1\s\src\Core\src\Layouts\GridLayoutManager.cs:383
  at Microsoft.Maui.Layouts.GridLayoutManager.GridStructure.SecondMeasurePass() in D:\a\_work\1\s\src\Core\src\Layouts\GridLayoutManager.cs:475
  at Microsoft.Maui.Layouts.GridLayoutManager.GridStructure.MeasureCells() in D:\a\_work\1\s\src\Core\src\Layouts\GridLayoutManager.cs:372
  at Microsoft.Maui.Layouts.GridLayoutManager.GridStructure..ctor(IGridLayout grid, Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Core\src\Layouts\GridLayoutManager.cs:144
  at Microsoft.Maui.Layouts.GridLayoutManager.Measure(Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Core\src\Layouts\GridLayoutManager.cs:24
  at Microsoft.Maui.Controls.Layout.CrossPlatformMeasure(Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Controls\src\Core\Layout\Layout.cs:354
  at Microsoft.Maui.Platform.LayoutViewGroup.CrossPlatformMeasure(Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Core\src\Platform\Android\LayoutViewGroup.cs:57
  at Microsoft.Maui.Platform.LayoutViewGroup.OnMeasure(Int32 widthMeasureSpec, Int32 heightMeasureSpec) in D:\a\_work\1\s\src\Core\src\Platform\Android\LayoutViewGroup.cs:82
  at Android.Views.View.n_OnMeasure_II(IntPtr jnienv, IntPtr native__this, Int32 widthMeasureSpec, Int32 heightMeasureSpec) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Android.Views.View.cs:19598
  at Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPII_V(_JniMarshal_PPII_V callback, IntPtr jnienv, IntPtr klazz, Int32 p0, Int32 p1) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:154
  at Java.Interop.JniEnvironment.StaticMethods.CallStaticLongMethod(JniObjectReference type, JniMethodInfo method, JniArgumentValue* args) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/obj/Release/net7.0/JniEnvironment.g.cs:21700
  at Java.Interop.JniPeerMembers.JniStaticMethods.InvokeInt64Method(String encodedMember, JniArgumentValue* parameters) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniStaticMethods.cs:147
  at Microsoft.Maui.PlatformInterop.MeasureAndGetWidthAndHeight(View view, Int32 widthMeasureSpec, Int32 heightMeasureSpec) in D:\a\_work\1\s\artifacts\obj\Core\Release\net8.0-android\generated\src\Microsoft.Maui.PlatformInterop.cs:580
  at Microsoft.Maui.ViewHandlerExtensions.GetDesiredSizeFromHandler(IViewHandler viewHandler, Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Core\src\Handlers\ViewHandlerExtensions.Android.cs:93
  at Microsoft.Maui.Handlers.ViewHandler`2[[Microsoft.Maui.ILayout, Microsoft.Maui, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[Microsoft.Maui.Platform.LayoutViewGroup, Microsoft.Maui, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].GetDesiredSize(Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Core\src\Handlers\View\ViewHandlerOfT.Android.cs:18
  at Microsoft.Maui.Layouts.LayoutExtensions.ComputeDesiredSize(IView view, Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Core\src\Layouts\LayoutExtensions.cs:27
  at Microsoft.Maui.Controls.VisualElement.MeasureOverride(Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Controls\src\Core\VisualElement\VisualElement.cs:1893
  at Microsoft.Maui.Controls.VisualElement.Microsoft.Maui.IView.Measure(Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Controls\src\Core\VisualElement\VisualElement.cs:1880
  at Microsoft.Maui.Layouts.LayoutExtensions.MeasureContent(IContentView contentView, Thickness inset, Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Core\src\Layouts\LayoutExtensions.cs:163
  at Microsoft.Maui.Layouts.LayoutExtensions.MeasureContent(IContentView contentView, Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Core\src\Layouts\LayoutExtensions.cs:142
  at Microsoft.Maui.Controls.ContentPage.Microsoft.Maui.ICrossPlatformLayout.CrossPlatformMeasure(Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Controls\src\Core\ContentPage\ContentPage.cs:85
  at Microsoft.Maui.Platform.ContentViewGroup.CrossPlatformMeasure(Double widthConstraint, Double heightConstraint) in D:\a\_work\1\s\src\Core\src\Platform\Android\ContentViewGroup.cs:51
  at Microsoft.Maui.Platform.ContentViewGroup.OnMeasure(Int32 widthMeasureSpec, Int32 heightMeasureSpec) in D:\a\_work\1\s\src\Core\src\Platform\Android\ContentViewGroup.cs:73
  at Android.Views.View.n_OnMeasure_II(IntPtr jnienv, IntPtr native__this, Int32 widthMeasureSpec, Int32 heightMeasureSpec) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Android.Views.View.cs:19598
  at Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPII_V(_JniMarshal_PPII_V callback, IntPtr jnienv, IntPtr klazz, Int32 p0, Int32 p1) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:154
  at java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionTemplatedItemViewHolder{6257c03 position=31 id=-1, oldPos=25, pLpos:25 scrap [attachedScrap] tmpDetached no parent} crc645d80431ce5f73f11.MauiRecyclerView_3{caadd54 VFED..... ......I. 0,121-1080,1988}, adapter:crc645d80431ce5f73f11.ReorderableItemsViewAdapter_2@a5ca3ee, layout:androidx.recyclerview.widget.LinearLayoutManager@6ea4384, context:crc64e550a20d138f04c9.MainActivity@6bea620
  at at androidx.recyclerview.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:6544)
  at at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6727)
  at at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6688)
  at at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6684)
  at at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2362)
  at at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1662)
  at at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1622)
  at at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:687)
  at at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:4550)
  at at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3975)
  at at android.view.View.measure(View.java:24530)
  at at com.microsoft.maui.PlatformInterop.measureAndGetWidthAndHeight(PlatformInterop.java:404)
  at at crc6452ffdc5b34af3a0f.LayoutViewGroup.n_onMeasure(Native Method)
  at at crc6452ffdc5b34af3a0f.LayoutViewGroup.onMeasure(LayoutViewGroup.java:59)
  at at android.view.View.measure(View.java:24530)
  at at com.microsoft.maui.PlatformInterop.measureAndGetWidthAndHeight(PlatformInterop.java:404)
  at at crc6452ffdc5b34af3a0f.ContentViewGroup.n_onMeasure(Native Method)
  at at crc6452ffdc5b34af3a0f.ContentViewGroup.onMeasure(ContentViewGroup.java:59)
  at at android.view.View.measure(View.java:24530)
  at at crc640ec207abc449b2ca.ShellPageContainer.n_onMeasure(Native Method)
  at at crc640ec207abc449b2ca.ShellPageContainer.onMeasure(ShellPageContainer.java:66)
  at at android.view.View.measure(View.java:24530)
  at at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6828)
  at at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
  at at android.view.View.measure(View.java:24530)
  at at androidx.recyclerview.widget.RecyclerView$LayoutManager.measureChildWithMargins(RecyclerView.java:10124)
  at at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1688)
  at at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1622)
  at at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:687)
  at at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4604)
  at at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4307)
  at at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4873)
  at at android.view.View.layout(View.java:21912)
  at at android.view.ViewGroup.layout(ViewGroup.java:6260)
  at at androidx.viewpager2.widget.ViewPager2.onLayout(ViewPager2.java:527)
  at at android.view.View.layout(View.java:21912)
  at at android.view.ViewGroup.layout(ViewGroup.java:6260)
  at at com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(HeaderScrollingViewBehavior.java:149)
  at at com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:43)
  at at com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:2376)
  at at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:953)
  at at android.view.View.layout(View.java:21912)
  at at android.view.ViewGroup.layout(ViewGroup.java:6260)
  at at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
  at at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
  at at android.view.View.layout(View.java:21912)
  at at android.view.ViewGroup.layout(ViewGroup.java:6260)
  at at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
  at at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
  at at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
  at at android.view.View.layout(View.java:21912)
  at at android.view.ViewGroup.layout(ViewGroup.java:6260)
  at at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
  at at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
  at at android.view.View.layout(View.java:21912)
  at at android.view.ViewGroup.layout(ViewGroup.java:6260)
  at at androidx.drawerlayout.widget.DrawerLayout.onLayout(DrawerLayout.java:1273)
  at at android.view.View.layout(View.java:21912)
  at at android.view.ViewGroup.layout(ViewGroup.java:6260)
  at at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
  at at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1818)
  at at android.widget.LinearLayout.onLayout(LinearLayout.java:1584)
  at at android.view.View.layout(View.java:21912)
  at at android.view.ViewGroup.layout(ViewGroup.java:6260)
  at at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
  at at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
  at at android.view.View.layout(View.java:21912)
  at at android.view.ViewGroup.layout(ViewGroup.java:6260)
  at at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
  at at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
  at at android.view.View.layout(View.java:21912)
  at at android.view.ViewGroup.layout(ViewGroup.java:6260)
  at at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
  at at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
  at at android.view.View.layout(View.java:21912)
  at at android.view.ViewGroup.layout(ViewGroup.java:6260)
  at at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
  at at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
  at at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
  at at android.view.View.layout(View.java:21912)
  at at android.view.ViewGroup.layout(ViewGroup.java:6260)
  at at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
  at at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
  at at com.android.internal.policy.DecorView.onLayout(DecorView.java:779)
  at at android.view.View.layout(View.java:21912)
  at at android.view.ViewGroup.layout(ViewGroup.java:6260)
  at at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3080)
  at at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2590)
  at at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1721)
  at at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7598)
  at at android.view.Choreographer$CallbackRecord.run(Choreographer.java:966)
  at at android.view.Choreographer.doCallbacks(Choreographer.java:790)
  at at android.view.Choreographer.doFrame(Choreographer.java:725)
  at at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:951)
  at at android.os.Handler.handleCallback(Handler.java:883)
  at at android.os.Handler.dispatchMessage(Handler.java:100)
  at at android.os.Looper.loop(Looper.java:214)
  at at android.app.ActivityThread.main(ActivityThread.java:7356)
  at at java.lang.reflect.Method.invoke(Native Method)
  at at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
  at at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
@markusroessler markusroessler added the t/bug Something isn't working label May 24, 2024
Copy link
Contributor

Hi I'm an AI powered bot that finds similar issues based off the issue title.

Please view the issues below to see if they solve your problem, and if the issue describes your problem please consider closing this one and thumbs upping the other issue to help us prioritize it. Thank you!

Open similar issues:

Closed similar issues:

Note: You can give me feedback by thumbs upping or thumbs downing this comment.

@rmarinho rmarinho added platform/android 🤖 area-controls-collectionview CollectionView, CarouselView, IndicatorView labels May 24, 2024
@rmarinho rmarinho added this to the Backlog milestone May 24, 2024
@mfeingol
Copy link

I just ran into the same issue adding groups to a CollectionView.

Java.Lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionTemplatedItemViewHolder{8c00d2a position=41 id=-1, oldPos=32, pLpos:32 scrap [changeScrap] update tmpDetached not recyclable(1) no parent} crc645d80431ce5f73f11.MauiRecyclerView_3{21aafe3 VFED..... ......ID 0,0-1440,2444}, adapter:crc645d80431ce5f73f11.ReorderableItemsViewAdapter_2@bd0dc3c, layout:androidx.recyclerview.widget.LinearLayoutManager@576fdc2, context:crc6446b5211041beaccb.MainActivity@9e473ab

Stack trace:

Java.Interop.JniEnvironment.InstanceMethods.CallNonvirtualVoidMethod(JniObjectReference , JniObjectReference , JniMethodInfo , JniArgumentValue* )
Java.Interop.JniPeerMembers.JniInstanceMethods.InvokeVirtualVoidMethod(String , IJavaPeerable , JniArgumentValue* )
AndroidX.RecyclerView.Widget.RecyclerView.OnLayout(Boolean , Int32 , Int32 , Int32 , Int32 )
Microsoft.Maui.Controls.Handlers.Items.MauiRecyclerView`3[[Microsoft.Maui.Controls.ReorderableItemsView, Microsoft.Maui.Controls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[Microsoft.Maui.Controls.Handlers.Items.GroupableItemsViewAdapter`2[[Microsoft.Maui.Controls.ReorderableItemsView, Microsoft.Maui.Controls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[Microsoft.Maui.Controls.Handlers.Items.IGroupableItemsViewSource, Microsoft.Maui.Controls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], Microsoft.Maui.Controls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null],[Microsoft.Maui.Controls.Handlers.Items.IGroupableItemsViewSource, Microsoft.Maui.Controls, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].OnLayout(Boolean changed, Int32 l, Int32 t, Int32 r, Int32 b)
AndroidX.RecyclerView.Widget.RecyclerView.n_OnLayout_ZIIII(IntPtr jnienv, IntPtr native__this, Boolean changed, Int32 l, Int32 t, Int32 r, Int32 b)
Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PPZIIII_V(_JniMarshal_PPZIIII_V callback, IntPtr jnienv, IntPtr klazz, Boolean p0, Int32 p1, Int32 p2, Int32 p3, Int32 p4)
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionTemplatedItemViewHolder{8c00d2a position=41 id=-1, oldPos=32, pLpos:32 scrap [changeScrap] update tmpDetached not recyclable(1) no parent} crc645d80431ce5f73f11.MauiRecyclerView_3{21aafe3 VFED..... ......ID 0,0-1440,2444}, adapter:crc645d80431ce5f73f11.ReorderableItemsViewAdapter_2@bd0dc3c, layout:androidx.recyclerview.widget.LinearLayoutManager@576fdc2, context:crc6446b5211041beaccb.MainActivity@9e473ab
androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(SourceFile:539)
androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(SourceFile:2)
androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(SourceFile:1)
androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(SourceFile:54)
androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(SourceFile:1)
androidx.recyclerview.widget.LinearLayoutManager.fill(SourceFile:49)
androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(SourceFile:765)
androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep1(SourceFile:350)
androidx.recyclerview.widget.RecyclerView.dispatchLayout(SourceFile:64)
androidx.recyclerview.widget.RecyclerView.onLayout(SourceFile:8)
crc645d80431ce5f73f11.MauiRecyclerView_3.n_onLayout(Native Method)
crc645d80431ce5f73f11.MauiRecyclerView_3.onLayout(SourceFile:1)
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
androidx.swiperefreshlayout.widget.SwipeRefreshLayout.onLayout(SourceFile:59)
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
crc6452ffdc5b34af3a0f.LayoutViewGroup.n_onLayout(Native Method)
crc6452ffdc5b34af3a0f.LayoutViewGroup.onLayout(SourceFile:1)
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
crc6452ffdc5b34af3a0f.ContentViewGroup.n_onLayout(Native Method)
crc6452ffdc5b34af3a0f.ContentViewGroup.onLayout(SourceFile:1)
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
android.widget.FrameLayout.layoutChildren FrameLayout.java:332
android.widget.FrameLayout.onLayout FrameLayout.java:270
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
androidx.recyclerview.widget.RecyclerView$LayoutManager.layoutDecoratedWithMargins(SourceFile:33)
androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(SourceFile:171)
androidx.recyclerview.widget.LinearLayoutManager.fill(SourceFile:49)
androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(SourceFile:765)
androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(SourceFile:67)
androidx.recyclerview.widget.RecyclerView.dispatchLayout(SourceFile:72)
androidx.recyclerview.widget.RecyclerView.onLayout(SourceFile:8)
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
androidx.viewpager2.widget.ViewPager2.onLayout(SourceFile:61)
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
android.widget.FrameLayout.layoutChildren FrameLayout.java:332
android.widget.FrameLayout.onLayout FrameLayout.java:270
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
android.widget.FrameLayout.layoutChildren FrameLayout.java:332
android.widget.FrameLayout.onLayout FrameLayout.java:270
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
android.widget.FrameLayout.layoutChildren FrameLayout.java:332
android.widget.FrameLayout.onLayout FrameLayout.java:270
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
com.google.android.material.appbar.HeaderScrollingViewBehavior.layoutChild(SourceFile:157)
com.google.android.material.appbar.ViewOffsetBehavior.onLayoutChild(SourceFile:1)
androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(SourceFile:43)
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
androidx.drawerlayout.widget.DrawerLayout.onLayout(SourceFile:57)
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
android.widget.LinearLayout.setChildFrame LinearLayout.java:1891
android.widget.LinearLayout.layoutHorizontal LinearLayout.java:1880
android.widget.LinearLayout.onLayout LinearLayout.java:1640
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
android.widget.FrameLayout.layoutChildren FrameLayout.java:332
android.widget.FrameLayout.onLayout FrameLayout.java:270
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
android.widget.FrameLayout.layoutChildren FrameLayout.java:332
android.widget.FrameLayout.onLayout FrameLayout.java:270
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
android.widget.FrameLayout.layoutChildren FrameLayout.java:332
android.widget.FrameLayout.onLayout FrameLayout.java:270
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
android.widget.LinearLayout.setChildFrame LinearLayout.java:1891
android.widget.LinearLayout.layoutVertical LinearLayout.java:1729
android.widget.LinearLayout.onLayout LinearLayout.java:1638
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
android.widget.FrameLayout.layoutChildren FrameLayout.java:332
android.widget.FrameLayout.onLayout FrameLayout.java:270
com.android.internal.policy.DecorView.onLayout DecorView.java:789
android.view.View.layout View.java:24421
android.view.ViewGroup.layout ViewGroup.java:6440
android.view.ViewRootImpl.performLayout ViewRootImpl.java:4258
android.view.ViewRootImpl.performTraversals ViewRootImpl.java:3583
android.view.ViewRootImpl.doTraversal ViewRootImpl.java:2465
android.view.ViewRootImpl$TraversalRunnable.run ViewRootImpl.java:9305
android.view.Choreographer$CallbackRecord.run Choreographer.java:1339
android.view.Choreographer$CallbackRecord.run Choreographer.java:1348
android.view.Choreographer.doCallbacks Choreographer.java:952
android.view.Choreographer.doFrame Choreographer.java:882
android.view.Choreographer$FrameDisplayEventReceiver.run Choreographer.java:1322
android.os.Handler.handleCallback Handler.java:958
android.os.Handler.dispatchMessage Handler.java:99
android.os.Looper.loopOnce Looper.java:205
android.os.Looper.loop Looper.java:294
android.app.ActivityThread.main ActivityThread.java:8177
java.lang.reflect.Method.invoke(Native Method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run RuntimeInit.java:552
com.android.internal.os.ZygoteInit.main ZygoteInit.java:971

@markusroessler
Copy link
Author

Still reproducibly with MAUI 8.0.70. We are constantly running into this bug. Would be nice, if someone could have look.

@alexsmi-noveo
Copy link

The same issue for me on the prod is reported by Google Play. I'm unable to reproduce it locally. MAUI 8.0.70

@mfeingol
Copy link

I'm still seeing this bug, which is a bit of a showstopper as it leads to random app crashes. We can no longer deploy Xamarin Forms updates to Google Play, due to lack of support for Android 14. So the fact this is still a MAUI bug is disheartening.

Has anyone found a workaround besides reallocating the ObservableCollection?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-controls-collectionview CollectionView, CarouselView, IndicatorView platform/android 🤖 t/bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants