using System; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Collections; namespace Xamarin.Forms { public interface ITemplatedItemsList : IReadOnlyList, INotifyCollectionChanged where TItem : BindableObject { event NotifyCollectionChangedEventHandler GroupedCollectionChanged; event PropertyChangedEventHandler PropertyChanged; object BindingContext { get; } string Name { get; set; } TItem HeaderContent { get; } IEnumerable ItemsSource { get; } IReadOnlyList ShortNames { get; } IListProxy ListProxy { get; } int GetGlobalIndexForGroup(ITemplatedItemsList group); int GetGlobalIndexOfItem(object item); ITemplatedItemsList GetGroup(int index); Tuple GetGroupAndIndexOfItem(object item); Tuple GetGroupAndIndexOfItem(object group, object item); int GetGroupIndexFromGlobal(int globalIndex, out int leftOver); int IndexOf(TItem item); TItem UpdateContent(TItem content, int index); TItem UpdateHeader(TItem content, int groupIndex); } }