Beispiel #1
0
        protected virtual int DeterminePosition(ScrollToRequestEventArgs args)
        {
            if (args.Mode == ScrollToMode.Position)
            {
                // TODO hartez 2018/08/28 15:40:03 Need to handle group indices here as well
                return(args.Index);
            }

            return(ItemsViewAdapter.GetPositionForItem(args.Item));
        }
            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);
            }
        void MarkItemSelected(object selectedItem)
        {
            var position       = ItemsViewAdapter.GetPositionForItem(selectedItem);
            var selectedHolder = FindViewHolderForAdapterPosition(position);

            if (selectedHolder == null)
            {
                return;
            }

            if (selectedHolder is SelectableViewHolder selectable)
            {
                selectable.IsSelected = true;
            }
        }
        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);
        }