Ejemplo n.º 1
0
        protected override void UpdateAdapter()
        {
            // By default the CollectionViewAdapter creates the items at whatever size the template calls for
            // But for the Carousel, we want it to create the items to fit the width/height of the viewport
            // So we give it an alternate delegate for creating the views

            var oldItemViewAdapter = ItemsViewAdapter;

            UnsubscribeCollectionItemsSourceChanged(oldItemViewAdapter);

            ItemsViewAdapter = new ItemsViewAdapter <ItemsView, IItemsViewSource>(ItemsView,
                                                                                  (view, context) => new SizedItemContentView(Context, GetItemWidth, GetItemHeight));

            _gotoPosition = -1;


            SwapAdapter(ItemsViewAdapter, false);

            if (_oldPosition > 0)
            {
                UpdateInitialPosition();
            }

            if (ItemsViewAdapter?.ItemsSource is ObservableItemsSource observableItemsSource)
            {
                observableItemsSource.CollectionItemsSourceChanged += CollectionItemsSourceChanged;
            }

            oldItemViewAdapter?.Dispose();
        }
Ejemplo n.º 2
0
 void UnsubscribeCollectionItemsSourceChanged(ItemsViewAdapter <ItemsView, IItemsViewSource> oldItemViewAdapter)
 {
     if (oldItemViewAdapter?.ItemsSource is ObservableItemsSource oldObservableItemsSource)
     {
         oldObservableItemsSource.CollectionItemsSourceChanged -= CollectionItemsSourceChanged;
     }
 }
Ejemplo n.º 3
0
        void UpdateNativeSelection()
        {
            var mode = ItemsView.SelectionMode;

            ItemsViewAdapter.ClearNativeSelection();

            switch (mode)
            {
            case SelectionMode.None:
                return;

            case SelectionMode.Single:
                var selectedItem = ItemsView.SelectedItem;
                ItemsViewAdapter.MarkNativeSelection(selectedItem);
                return;

            case SelectionMode.Multiple:
                var selectedItems = ItemsView.SelectedItems;

                foreach (var item in selectedItems)
                {
                    ItemsViewAdapter.MarkNativeSelection(item);
                }
                return;
            }
        }
Ejemplo n.º 4
0
 public CarouselViewOnScrollListener(ItemsView itemsView, ItemsViewAdapter <ItemsView, IItemsViewSource> itemsViewAdapter) : base(itemsView, itemsViewAdapter)
 {
 }