public virtual View GetView(object model, ViewGroup parent, View oldView) { DataTemplate newTemplate = GetTemplate(model); int oldViewId = (oldView != null) ? (int)oldView.Tag : -1; View resultView; if (oldViewId == newTemplate.ViewId) { resultView = oldView; } else { resultView = newTemplate.Inflate(parent); resultView.Tag = newTemplate.ViewId; } newTemplate.AttachToViewModel(resultView, model); return(resultView); }