MvvmCross多态MvxListView崩溃应用程序

MvvmCross多态MvxListView崩溃应用程序,listview,xamarin.android,mvvmcross,Listview,Xamarin.android,Mvvmcross,我有以下代码: public void LoadComments () { IsLoading = true; Console.WriteLine (Recomendation.Recomendation.ID); List<Comment> tmpcomments = CommunicationManager.Comments.GetComments (Core.AppConfiguration

我有以下代码:

public void LoadComments ()
        {
            IsLoading = true;
            Console.WriteLine (Recomendation.Recomendation.ID);
            List<Comment> tmpcomments = CommunicationManager.Comments.GetComments (Core.AppConfiguration.Instance.User.ID, Page, Recomendation.Recomendation.ID);
            Dispatcher.RequestMainThreadAction (() =>
            {
                try
                {           
                        Comments.Add (Recomendation);       
                    foreach (var item in tmpcomments)
                    {
                        var vm = new CommentViewModel (item);
                        Comments.Add (vm);
                    }

                    IsLoading = false;
                }
                catch (Exception ex)
                {

                }
            });
        }
如上所述,这是一个使用以下适配器的多态MvxLiseView:

public class PostPageListAdapter :MvxAdapter
    {

        public PostPageListAdapter(Context context, IMvxAndroidBindingContext bindingContext)
            : base(context, bindingContext)
        {
        }

        public override int GetItemViewType(int position)
        {
            var item = GetRawItem(position);
            if (item is RecomendationViewModel)
                return 0;
            return 1;
        }

        public override int ViewTypeCount
        {
            get { return 2; }
        }

        protected override View GetBindableView(View convertView, object source, int templateId)
        {
            try
            {
                if (source is RecomendationViewModel)
                {
                    templateId = Resource.Layout.ListHeader_RecomendationPage;
                    return base.GetBindableView (convertView, source, templateId);
                }
                else
                if (source is CommentViewModel)
                {
                    templateId = Resource.Layout.Template_Comment;
                }
                View v = base.GetBindableView (convertView, source, templateId);//          
                return v;
            }
            catch (Exception ex)
            {
                return new View (convertView.Context);
            }
        }
    }

它没有缓存在任何地方,只是使我的应用程序崩溃。它变得非常令人沮丧…

您能否每隔一段时间提供更多关于
何时发生的信息
是-如果您能够确定导致崩溃的原因,那么这可能有助于调试问题。如果您关闭了一些多态类型,是否会发生这种情况?这是否会停止问题并帮助确定问题所在?是否针对特定的推荐值?或者,如果只添加建议或仅添加注释对象,是否会出现问题?如果其他一切都让你“沮丧”,你能把一个简单的复制样本上传到github repo吗?另外,
catch(Exception ex){return new View(convertView.Context);}
块看起来非常危险嘿,谢谢你的快速响应。每当我导航到comments页面时,都会调用Load comments。我可以导航到它,然后返回10次,然后它可能会崩溃,我不能说每隔一段时间它就会崩溃X次。添加try-catch只是为了看看是否可以捕获异常。我也曾在UI线程中尝试过它,但只有在我添加Recomendation对象时,它才被删除,无论我怎么尝试,它都不会崩溃。现在的问题是,你是唯一一个可以调试它的人-所以我的主要建议保持不变-尝试使你的列表非多态性-异常是否仍然发生?你能在一个更简单的测试项目中重现这个问题吗?你可以在这个问题(编辑问题)或github上分享这个问题吗?当你删除推荐(但继续添加评论)时,问题就消失了,这表明推荐中的某个地方存在问题——但只有你有代码来解决这个问题。你说的列表非多态是什么意思?我有很多地方都有推荐单,一切都很好。实际上,我这样做是因为我想在一个可滚动的视图中显示一个项目及其注释。我尝试使用硬编码的设计进行推荐,然后在scrollview中使用listview进行注释,但是listview没有正常工作。除了多态列表,还有更好的解决方案吗?实际上,我觉得这是一种实现我所需要的UI的技巧
public class PostPageListAdapter :MvxAdapter
    {

        public PostPageListAdapter(Context context, IMvxAndroidBindingContext bindingContext)
            : base(context, bindingContext)
        {
        }

        public override int GetItemViewType(int position)
        {
            var item = GetRawItem(position);
            if (item is RecomendationViewModel)
                return 0;
            return 1;
        }

        public override int ViewTypeCount
        {
            get { return 2; }
        }

        protected override View GetBindableView(View convertView, object source, int templateId)
        {
            try
            {
                if (source is RecomendationViewModel)
                {
                    templateId = Resource.Layout.ListHeader_RecomendationPage;
                    return base.GetBindableView (convertView, source, templateId);
                }
                else
                if (source is CommentViewModel)
                {
                    templateId = Resource.Layout.Template_Comment;
                }
                View v = base.GetBindableView (convertView, source, templateId);//          
                return v;
            }
            catch (Exception ex)
            {
                return new View (convertView.Context);
            }
        }
    }