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);
        }