Exemple #1
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;
            }
        }
 void UnsubscribeCollectionItemsSourceChanged(ItemsViewAdapter <ItemsView, IItemsViewSource> oldItemViewAdapter)
 {
     if (oldItemViewAdapter?.ItemsSource is ObservableItemsSource oldObservableItemsSource)
     {
         oldObservableItemsSource.CollectionItemsSourceChanged -= CollectionItemsSourceChanged;
     }
 }
            int GetIndexFromTemplatedCell(global::Android.Views.View view)
            {
                int itemIndex = -1;

                if (view is ItemContentView templatedCell)
                {
                    var bContext = templatedCell?.Element?.BindingContext;
                    itemIndex = ItemsViewAdapter.GetPositionForItem(bContext);
                }

                return(itemIndex);
            }
        int GetCarouselViewCurrentIndex(int index)
        {
            var centeredView = this.GetCenteredView();

            if (centeredView is ItemContentView templatedCell)
            {
                var bContext = templatedCell?.Element?.BindingContext;
                index = ItemsViewAdapter.GetPositionForItem(bContext);
            }
            else
            {
                return(-1);
            }

            return(index);
        }
        protected override int DetermineTargetPosition(ScrollToRequestEventArgs args)
        {
            if (args.Mode == ScrollToMode.Element)
            {
                return(ItemsViewAdapter.GetPositionForItem(args.Item));
            }

            if (!Carousel.Loop)
            {
                return(args.Index);
            }

            if (_carouselViewLoopManager == null)
            {
                return(-1);
            }

            var carouselPosition = GetCarouselViewCurrentIndex(Carousel.Position);
            var getGoIndex       = _carouselViewLoopManager.GetGoToIndex(this, carouselPosition, args.Index);

            return(getGoIndex);
        }
 public CarouselViewOnScrollListener(ItemsView itemsView, ItemsViewAdapter <ItemsView, IItemsViewSource> itemsViewAdapter, CarouselViewLoopManager carouselViewLoopManager) : base(itemsView, itemsViewAdapter, true)
 {
     _carouselView            = itemsView as FormsCarouselView;
     _carouselViewLoopManager = carouselViewLoopManager;
 }