protected override void Dispose(bool disposing) { if (_disposed) { return; } _disposed = true; if (disposing) { Controller.ScrollToRequested -= OnScrollToRequested; if (_headerRenderer != null) { Platform.ClearRenderer(_headerRenderer.View); _headerRenderer.Dispose(); _headerRenderer = null; } _headerView?.Dispose(); _headerView = null; if (_footerRenderer != null) { Platform.ClearRenderer(_footerRenderer.View); _footerRenderer.Dispose(); _footerRenderer = null; } _footerView?.Dispose(); _footerView = null; if (Control != null) { // Unhook the adapter from the ListView before disposing of it Control.Adapter = null; Control.SetOnScrollListener(null); } if (_adapter != null) { _adapter.Dispose(); _adapter = null; } } base.Dispose(disposing); }
protected override void Dispose(bool disposing) { if (_disposed) { return; } _disposed = true; if (disposing) { if (_headerRenderer != null) { Platform.ClearRenderer(_headerRenderer.View); _headerRenderer.Dispose(); _headerRenderer = null; } _headerView?.Dispose(); _headerView = null; if (_footerRenderer != null) { Platform.ClearRenderer(_footerRenderer.View); _footerRenderer.Dispose(); _footerRenderer = null; } _footerView?.Dispose(); _footerView = null; if (_adapter != null) { _adapter.Dispose(); _adapter = null; } Controller.ScrollToRequested -= OnScrollToRequested; } base.Dispose(disposing); }
void UpdateHeader() { var header = (VisualElement)Controller.HeaderElement; if (_headerRenderer != null) { var reflectableType = _headerRenderer as System.Reflection.IReflectableType; var rendererType = reflectableType != null?reflectableType.GetTypeInfo().AsType() : _headerRenderer.GetType(); if (header == null || Registrar.Registered.GetHandlerTypeForObject(header) != rendererType) { if (_headerView != null) { _headerView.Child = null; } Platform.ClearRenderer(_headerRenderer.View); _headerRenderer.Dispose(); _headerRenderer = null; } } if (header == null) { return; } if (_headerRenderer != null) { _headerRenderer.SetElement(header); } else { _headerRenderer = Platform.CreateRenderer(header, Context); if (_headerView != null) { _headerView.Child = _headerRenderer; } } Platform.SetRenderer(header, _headerRenderer); }