int FindCurrentSectionPosition(int fromPosition) { IListAdapter adapter = Adapter; if (fromPosition >= adapter.Count) { return(-1); // dataset has changed, no candidate } if (adapter.GetType().IsAssignableFrom(typeof(ISectionIndexer))) { // try fast way by asking section indexer ISectionIndexer indexer = (ISectionIndexer)adapter; int sectionPosition = indexer.GetSectionForPosition(fromPosition); int itemPosition = indexer.GetPositionForSection(sectionPosition); int typeView = adapter.GetItemViewType(itemPosition); if (IsItemViewTypePinned(adapter, typeView)) { return(itemPosition); } // else, no luck } // try slow way by looking through to the next section item above for (int position = fromPosition; position >= 0; position--) { int viewType = adapter.GetItemViewType(position); if (IsItemViewTypePinned(adapter, viewType)) { return(position); } } return(-1); // no candidate found }
public static Boolean isItemViewTypePinned(IListAdapter adapter, int viewType) { if (adapter.GetType() == (new HeaderViewListAdapter(null, null, null)).GetType()) { adapter = ((HeaderViewListAdapter)adapter).WrappedAdapter; } return(((PinnedSectionListAdapter)adapter).isItemViewTypePinned(viewType)); }
public bool IsItemViewTypePinned(IListAdapter adapter, int viewType) { if (adapter.GetType().IsAssignableFrom(typeof(HeaderViewListAdapter))) { adapter = ((HeaderViewListAdapter)adapter).WrappedAdapter; } return(((IPinnedSectionListAdapter)adapter).IsItemViewTypePinned(viewType)); }
public static Boolean isItemViewTypePinned(IListAdapter adapter, int viewType) { if (adapter.GetType() == (new HeaderViewListAdapter(null,null, null)).GetType()) { adapter = ((HeaderViewListAdapter)adapter).WrappedAdapter; } return ((PinnedSectionListAdapter) adapter).isItemViewTypePinned(viewType); }