Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }