{
public CollectionViewGallery()
{
- Content = new StackLayout
+ Content = new ScrollView
{
- Children =
- {
- new Button { Text ="Enable CollectionView", AutomationId = "EnableCollectionView", Command = new Command(() => Device.SetFlags(new[] { ExperimentalFlags.CollectionViewExperimental })) },
- GalleryBuilder.NavButton("Default Text Galleries", () => new DefaultTextGallery(), Navigation),
- GalleryBuilder.NavButton("DataTemplate Galleries", () => new DataTemplateGallery(), Navigation),
- GalleryBuilder.NavButton("Observable Collection Galleries", () => new ObservableCollectionGallery(), Navigation),
- GalleryBuilder.NavButton("Snap Points Galleries", () => new SnapPointsGallery(), Navigation),
- GalleryBuilder.NavButton("ScrollTo Galleries", () => new ScrollToGallery(), Navigation),
- GalleryBuilder.NavButton("CarouselView Galleries", () => new CarouselViewGallery(), Navigation),
- GalleryBuilder.NavButton("EmptyView Galleries", () => new EmptyViewGallery(), Navigation),
- GalleryBuilder.NavButton("Selection Galleries", () => new SelectionGallery(), Navigation),
- GalleryBuilder.NavButton("Propagation Galleries", () => new PropagationGallery(), Navigation),
- GalleryBuilder.NavButton("Grouping Galleries", () => new GroupingGallery(), Navigation),
- GalleryBuilder.NavButton("Item Size Galleries", () => new ItemsSizeGallery(), Navigation),
- GalleryBuilder.NavButton("Scroll Mode Galleries", () => new ScrollModeGallery(), Navigation),
- GalleryBuilder.NavButton("Alternate Layout Galleries", () => new AlternateLayoutGallery(), Navigation),
- GalleryBuilder.NavButton("Header/Footer Galleries", () => new HeaderFooterGallery(), Navigation),
- GalleryBuilder.NavButton("Nested CollectionViews", () => new NestedGalleries.NestedCollectionViewGallery(), Navigation),
+ Content = new StackLayout
+ {
+ Children =
+ {
+ new Button { Text ="Enable CollectionView", AutomationId = "EnableCollectionView", Command = new Command(() => Device.SetFlags(new[] { ExperimentalFlags.CollectionViewExperimental })) },
+ GalleryBuilder.NavButton("Default Text Galleries", () => new DefaultTextGallery(), Navigation),
+ GalleryBuilder.NavButton("DataTemplate Galleries", () => new DataTemplateGallery(), Navigation),
+ GalleryBuilder.NavButton("Observable Collection Galleries", () => new ObservableCollectionGallery(), Navigation),
+ GalleryBuilder.NavButton("Snap Points Galleries", () => new SnapPointsGallery(), Navigation),
+ GalleryBuilder.NavButton("ScrollTo Galleries", () => new ScrollToGallery(), Navigation),
+ GalleryBuilder.NavButton("CarouselView Galleries", () => new CarouselViewGallery(), Navigation),
+ GalleryBuilder.NavButton("EmptyView Galleries", () => new EmptyViewGallery(), Navigation),
+ GalleryBuilder.NavButton("Selection Galleries", () => new SelectionGallery(), Navigation),
+ GalleryBuilder.NavButton("Propagation Galleries", () => new PropagationGallery(), Navigation),
+ GalleryBuilder.NavButton("Grouping Galleries", () => new GroupingGallery(), Navigation),
+ GalleryBuilder.NavButton("Item Size Galleries", () => new ItemsSizeGallery(), Navigation),
+ GalleryBuilder.NavButton("Scroll Mode Galleries", () => new ScrollModeGallery(), Navigation),
+ GalleryBuilder.NavButton("Alternate Layout Galleries", () => new AlternateLayoutGallery(), Navigation),
+ GalleryBuilder.NavButton("Header/Footer Galleries", () => new HeaderFooterGallery(), Navigation),
+ GalleryBuilder.NavButton("Nested CollectionViews", () => new NestedGalleries.NestedCollectionViewGallery(), Navigation),
+ }
}
};
}
var startIndex = args.NewStartingIndex > -1 ? args.NewStartingIndex : _itemsSource.IndexOf(args.NewItems[0]);
var count = args.NewItems.Count;
- _collectionView.PerformBatchUpdates(() =>
+ if (!_grouped && _collectionView.NumberOfSections() != GroupCount && count > 0)
{
- if (!_grouped && _collectionView.NumberOfSections() != GroupCount)
+ // Okay, we're going from completely empty to more than 0 items; this means we don't even
+ // have a section 0 yet. Inserting a section 0 manually results in an unexplained crash, so instead
+ // we'll just reload the data so the UICollectionView can get its internal state sorted out.
+ _collectionView.ReloadData();
+ }
+ else
+ {
+ _collectionView.PerformBatchUpdates(() =>
{
- // We had an empty non-grouped list, and now we're trying to add an item;
- // we need to give it a section as well
- _collectionView.InsertSections(new NSIndexSet(0));
- }
-
- _collectionView.InsertItems(CreateIndexesFrom(startIndex, count));
- }, null);
+ var indexes = CreateIndexesFrom(startIndex, count);
+ _collectionView.InsertItems(indexes);
+ }, null);
+ }
}
void Remove(NotifyCollectionChangedEventArgs args)