static CellGroup GetCellGroup(ITemplatedItemsList <Cell> templatedItems, CellCacheProvider cacheProvider) { var result = new CellGroup(); result.Header = templatedItems.HeaderContent; result.Content = new List <Cell>(); for (int i = 0; i < templatedItems.Count; i++) { var item = templatedItems.ListProxy[i]; var cellCache = cacheProvider.GetCellCache(item); Cell cell = cellCache.GetNextUnusedCell(); if (cell != null) { cell.SendDisappearing(); templatedItems.UpdateContent(cell, i); cell.SendAppearing(); } else { cell = templatedItems[i]; cellCache.AddUsedCell(cell); cell.SendAppearing(); } result.Content.Add(cell); } return(result); }
public TemplatedItemsListProxy(ListView listview) { this.listview = listview; templated = ((ITemplatedItemsView <Cell>)listview).TemplatedItems; templated.CollectionChanged += Templated_CollectionChanged; UpdateHeader(); UpdateFooter(); }
static Cell RealizeItemTemplate(ITemplatedItemsList <Cell> templatedItems, ElementTemplate template, object context) { var index = templatedItems.GetGlobalIndexOfItem(context); if (index > -1) { return(templatedItems[index]); } return(template.CreateContent() as Cell); }
static Cell RealizeGroupedItemTemplate(ITemplatedItemsList <Cell> templatedItems, ElementTemplate template, object context) { var indices = templatedItems.GetGroupAndIndexOfItem(context); if (indices.Item1 > -1 && indices.Item2 > -1) { var group = templatedItems.GetGroup(indices.Item1); return(group[indices.Item2]); } return(template.CreateContent() as Cell); }
private bool HasHeader(ITemplatedItemsList <Cell> group) { if (Element == null) { return(false); } if (group.HeaderContent != null && Element.GroupShortNameBinding != null || Element.GroupHeaderTemplate != null) { return(true); } return(false); }
Cell GetNewGroupHeaderCell(ITemplatedItemsList <Cell> group) { var groupHeaderCell = _listView.TemplatedItems.GroupHeaderTemplate?.CreateContent(group.ItemsSource, _listView) as Cell; if (groupHeaderCell != null) { groupHeaderCell.BindingContext = group.ItemsSource; } else { groupHeaderCell = new TextCell(); groupHeaderCell.SetBinding(TextCell.TextProperty, nameof(group.Name)); groupHeaderCell.BindingContext = group; } groupHeaderCell.Parent = _listView; groupHeaderCell.SetIsGroupHeader <ItemsView <Cell>, Cell>(true); return(groupHeaderCell); }