public virtual void UpdateCanReorderItems() { var canReorderItems = (ItemsView as ReorderableItemsView)?.CanReorderItems == true; if (canReorderItems) { if (_itemTouchHelperCallback == null) { _itemTouchHelperCallback = new SimpleItemTouchHelperCallback(); } if (_itemTouchHelper == null) { _itemTouchHelper = new ItemTouchHelper(_itemTouchHelperCallback); _itemTouchHelper.AttachToRecyclerView(this); } _itemTouchHelperCallback.SetAdapter(ItemsViewAdapter as IItemTouchHelperAdapter); } else { if (_itemTouchHelper != null) { _itemTouchHelper.AttachToRecyclerView(null); _itemTouchHelper.Dispose(); _itemTouchHelper = null; } if (_itemTouchHelperCallback != null) { _itemTouchHelperCallback.Dispose(); _itemTouchHelperCallback = null; } } }
public virtual void TearDownOldElement(TItemsView oldElement) { // Stop listening for layout property changes if (ItemsLayout != null) { ItemsLayout.PropertyChanged -= LayoutPropertyChanged; } // Stop listening for ScrollTo requests oldElement.ScrollToRequested -= ScrollToRequested; RemoveScrollListener(); 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); } if (_itemTouchHelper != null) { _itemTouchHelper.AttachToRecyclerView(null); _itemTouchHelper.Dispose(); _itemTouchHelper = null; } if (_itemTouchHelperCallback != null) { _itemTouchHelperCallback.Dispose(); _itemTouchHelperCallback = null; } }