public override View GetChildView( int groupPosition, int childPosition, bool isLastChild, View convertView, ViewGroup parent) { var view = convertView; var item = groupings[groupPosition][childPosition]; int layoutId = getLayoutIdFunc(item); if (view == null) { view = inflater.Inflate(/*Resource.Layout.OptionTemplate_Boolean*/ layoutId, null); } else { if (bindingsDictionary.TryGetValue(view, out BoundViewData viewData)) { var currentDataContext = viewData.DataContext; if (currentDataContext != null && currentDataContext.Equals(item) && viewData.Applicator.HasBindings) { return(view); } viewData.Applicator.RemoveBindings(); /* If the item is not of the same type, do not reuse the view. */ if (viewData.DataContext.GetType() != item.GetType()) { view = inflater.Inflate(layoutId, null); } } } var applicator = new XmlBindingApplicator(); applicator.ApplyBindings(view, item, layoutId); bindingsDictionary[view] = new BoundViewData(applicator, item); reverseLookup[item] = view; return(view); }
public override View GetGroupView( int groupPosition, bool isExpanded, View convertView, ViewGroup parent) { var view = convertView; var group = groupings[groupPosition]; if (view == null) { view = inflater.Inflate(groupHeaderLayoutId, null); } else { if (bindingsDictionary.TryGetValue( view, out BoundViewData viewData)) { var currentDataContext = viewData.DataContext; if (currentDataContext != null && currentDataContext.Equals(group) && viewData.Applicator.HasBindings) { return(view); } viewData.Applicator.RemoveBindings(); if (viewData.DataContext.GetType() != group.GetType()) { view = inflater.Inflate(groupHeaderLayoutId, null); } } } var applicator = new XmlBindingApplicator(); applicator.ApplyBindings(view, group, groupHeaderLayoutId); bindingsDictionary[view] = new BoundViewData(applicator, group); reverseLookup[group] = view; return(view); }