void AddOrUpdateScrollListener() { RemoveScrollListener(); _recyclerViewScrollListener = CreateScrollListener(); AddOnScrollListener(_recyclerViewScrollListener); }
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); } }
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); }