public override View GetView(int position, View convertView, ViewGroup parent) { //View view = convertView ?? inflater.Inflate(layoutId, parent, false); View view; try { view = convertView ?? inflater.Inflate(layoutId, parent, false); } catch (Exception ex) { Console.WriteLine(ex); throw; } TItem item = this[position]; XmlBindingApplicator applicator; if (convertView == null || !bindingsDictionary.TryGetValue(view, out applicator)) { applicator = new XmlBindingApplicator(); } else { applicator.RemoveBindings(); } applicator.ApplyBindings(view, item, layoutId); bindingsDictionary[view] = applicator; return(view); }
public BoundViewData( XmlBindingApplicator applicator, object dataContext) { Applicator = applicator; DataContext = dataContext; }
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); }
public override View GetView(int position, View convertView, ViewGroup parent) { View view = convertView ?? inflater.Inflate(layoutId, parent, false); TItem item = this[position]; XmlBindingApplicator applicator; if (!bindingsDictionary.TryGetValue(view, out applicator)) { applicator = new XmlBindingApplicator(); } else { applicator.RemoveBindings(); } applicator.ApplyBindings(view, item, layoutId); return(view); }