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