Ejemplo n.º 1
0
        void AddOrUpdateScrollListener()
        {
            RemoveScrollListener();

            _recyclerViewScrollListener = CreateScrollListener();
            AddOnScrollListener(_recyclerViewScrollListener);
        }
Ejemplo n.º 2
0
		void RemoveScrollListener()
		{
			if (_recyclerViewScrollListener == null)
				return;

			_recyclerViewScrollListener.Dispose();
			ClearOnScrollListeners();
			_recyclerViewScrollListener = null;
		}
        protected virtual void TearDownOldElement(ItemsView oldElement)
        {
            if (oldElement == null)
            {
                return;
            }

            // Stop listening for layout property changes
            if (_layout != null)
            {
                _layout.PropertyChanged -= LayoutPropertyChanged;
            }

            // Stop listening for property changes
            oldElement.PropertyChanged -= OnElementPropertyChanged;

            // Stop listening for ScrollTo requests
            oldElement.ScrollToRequested -= ScrollToRequested;

            if (_recyclerViewScrollListener != null)
            {
                _recyclerViewScrollListener.Dispose();
                ClearOnScrollListeners();
                _recyclerViewScrollListener = null;
            }

            if (ItemsViewAdapter != null)
            {
                // Stop watching for empty items or scroll adjustments
                _emptyCollectionObserver.Stop(ItemsViewAdapter);
                _itemsUpdateScrollObserver.Stop(ItemsViewAdapter);

                // Unhook whichever adapter is active
                SetAdapter(null);

                _emptyViewAdapter?.Dispose();
                ItemsViewAdapter?.Dispose();
            }

            if (_snapManager != null)
            {
                _snapManager.Dispose();
                _snapManager = null;
            }

            if (_itemDecoration != null)
            {
                RemoveItemDecoration(_itemDecoration);
            }
        }
Ejemplo n.º 4
0
        public RecyclerViewVerseViewAdapter(Context context, RecyclerView recyclerView, LinearLayoutManager layoutManager, int chapterHeadingVerseOffset)
        {
            _recyclerView              = recyclerView;
            _layoutManager             = layoutManager;
            _chapterHeadingVerseOffset = chapterHeadingVerseOffset;

            _scrollListener           = new RecyclerViewScrollListener();
            _scrollListener.Scrolled += ScrollListenerOnScrolled;
            _recyclerView.AddOnScrollListener(_scrollListener);

            _swipeTouchListener               = new SwipeTouchListener(context);
            _swipeTouchListener.OnDown       += SwipeTouchListenerOnOnDown;
            _swipeTouchListener.OnSwipeLeft  += SwipeTouchListenerOnOnSwipeLeft;
            _swipeTouchListener.OnSwipeRight += SwipeTouchListenerOnOnSwipeRight;
            _recyclerView.SetOnTouchListener(_swipeTouchListener);
        }
        protected virtual void SetUpNewElement(TItemsView newElement)
        {
            if (newElement == null)
            {
                ItemsView = null;
                return;
            }

            ItemsView = newElement;

            ItemsView.PropertyChanged += OnElementPropertyChanged;

            // TODO hartez 2018/06/06 20:49:14 Review whether we can just do this in the constructor
            if (Tracker == null)
            {
                Tracker = new VisualElementTracker(this);
            }

            this.EnsureId();

            UpdateItemsSource();

            _layout = GetItemsLayout();
            SetLayoutManager(SelectLayoutManager(_layout));

            UpdateSnapBehavior();
            UpdateBackgroundColor();
            UpdateFlowDirection();
            UpdateItemSpacing();

            UpdateHorizontalScrollBarVisibility();
            UpdateVerticalScrollBarVisibility();

            // Keep track of the ItemsLayout's property changes
            if (_layout != null)
            {
                _layout.PropertyChanged += LayoutPropertyChanged;
            }

            // Listen for ScrollTo requests
            ItemsView.ScrollToRequested += ScrollToRequested;

            _recyclerViewScrollListener = new RecyclerViewScrollListener <TItemsView, TItemsViewSource>(ItemsView, ItemsViewAdapter);
            AddOnScrollListener(_recyclerViewScrollListener);
        }