void SelectItem(object item) { int position = TemplatedItemsView.TemplatedItems.GetGlobalIndexOfItem(item); AView view = null; if (position != -1) { view = _realListView.GetChildAt(position + 1 - _realListView.FirstVisiblePosition); } Select(position, view); }
private async void _control_Scroll(object sender, AbsListView.ScrollEventArgs e) { var c = _control.GetChildAt(0); var scrolly = -c.Top + _control.FirstVisiblePosition * c.Height; if (scrolly < 20) { await Task.Delay(250); } // TODO: When scrolls to down we should animate toolbar to top together with layout // NavigationPage.SetHasNavigationBar(page.CurrentPage, !(scrolly > 20)); }
void DisposeCells() { var cellCount = _realListView?.ChildCount ?? 0; for (int i = 0; i < cellCount; i++) { var layout = _realListView.GetChildAt(i) as ConditionalFocusLayout; // Headers and footers will be skipped. They are disposed elsewhere. if (layout == null || layout.IsDisposed()) { continue; } var renderedView = layout?.GetChildAt(0); var element = (renderedView as INativeElementView)?.Element; var view = (element as ViewCell)?.View; if (view != null) { var renderer = Platform.GetRenderer(view); if (renderer == renderedView) { element.ClearValue(Platform.RendererProperty); } renderer?.Dispose(); renderer = null; } renderedView?.Dispose(); renderedView = null; } }