C# 网格内部列表-适配器布局mvxexception
我尝试在ListView中显示GridView。我想显示按某些属性分组的图像 我的Listview(信息:我删除了以下代码段中的所有布局选项(可读性更好): 上面的C# 网格内部列表-适配器布局mvxexception,c#,binding,xamarin,xamarin.android,mvvmcross,C#,Binding,Xamarin,Xamarin.android,Mvvmcross,我尝试在ListView中显示GridView。我想显示按某些属性分组的图像 我的Listview(信息:我删除了以下代码段中的所有布局选项(可读性更好): 上面的MvxGridView在独立运行时(没有ListView作为父视图)可以完美地工作。ListView只是显示一个标题 下面是显示Listview的适配器: public class AlbumDetailAdapter : BasePictureSectionAdapter { private readonly Activit
MvxGridView
在独立运行时(没有ListView作为父视图)可以完美地工作。ListView只是显示一个标题
下面是显示Listview的适配器:
public class AlbumDetailAdapter : BasePictureSectionAdapter
{
private readonly Activity _context;
public AlbumDetailAdapter(Activity context, IMvxAndroidBindingContext bindingContext, bool hideheader = false)
: base(context, bindingContext, hideheader)
{
_context = context;
}
protected override View GetView(int position, View convertView, ViewGroup parent, int templateId)
{
var keyitem = GetRawItem(position) as KeyedList<string, PictureDetailDataModel>;
if (keyitem == null) return base.GetView(position, convertView, parent, templateId);
AlbumDetailViewHoler holder = null;
if (convertView == null)
{
// HERE CRASHS THE APP
convertView = _context.LayoutInflater.Inflate(templateId, parent, false);
}
else
{
holder = (AlbumDetailViewHoler)convertView.Tag;
}
if (holder == null)
{
holder = new AlbumDetailViewHoler
{
Header = convertView.FindViewById<TextView>(Resource.Id.albumdetailitem_header),
GridView = convertView.FindViewById<SpecialGridView>(Resource.Id.albumdetailitem_imagegrid)
};
holder.GridView.FastScrollEnabled = false;
holder.GridView.Adapter = new PhonePictureAdapter(_context, BindingContext, 120);
convertView.Tag = holder;
}
// Set header text
holder.Header.Text = keyitem.Key;
// Set itemsource
holder.GridView.ItemsSource = keyitem.Values;
return convertView;
}
private class AlbumDetailViewHoler : BaseSectionViewHolder
{
public SpecialGridView GridView { get; set; }
}
}
公共类AlbumDetailAdapter:BasePictureSectionAdapter
{
私有只读活动\u上下文;
公共AlbumDetailAdapter(活动上下文,IMvxAndroidBindingContext绑定上下文,bool hideheader=false)
:base(上下文、绑定上下文、隐藏头)
{
_上下文=上下文;
}
受保护的覆盖视图GetView(int位置、视图转换视图、视图组父视图、int模板ID)
{
var keyitem=GetRawItem(位置)作为KeyedList;
if(keyitem==null)返回base.GetView(位置、convertView、父级、templateId);
AlbumDetailViewHoler支架=空;
if(convertView==null)
{
//在这里崩溃的应用程序
convertView=_context.LayoutInflater.Inflate(templateId,parent,false);
}
其他的
{
holder=(AlbumDetailViewHoler)convertView.Tag;
}
if(holder==null)
{
holder=新相册详细信息查看孔
{
Header=convertView.FindViewById(Resource.Id.albumdetailitem_头),
GridView=convertView.FindViewById(Resource.Id.albumdetailitem\u imagegrid)
};
holder.GridView.FastScrollEnabled=false;
holder.GridView.Adapter=新的PhonePictureAdapter(_context,BindingContext,120);
convertView.Tag=holder;
}
//设置标题文本
holder.Header.Text=keyitem.Key;
//设置项目源
holder.GridView.ItemsSource=keyitem.Values;
返回视图;
}
私有类AlbumDetailViewHoler:BaseSectionViewHolder
{
public SpecialGridView GridView{get;set;}
}
}
应用程序崩溃,出现以下异常:
bindingContext在MVXAAdapter创建期间为空-适配器的
仅当特定绑定上下文已放置在
堆栈“
我不知道出了什么问题。如果没有内部GridView,它工作得很好,因此BindingContext不能为空。有没有更好的方法来实现这一点?(没有外部库)?或者出了什么问题?感谢有同样问题的其他人,我回答自己的问题 问题是,我试图从普通上下文中取消布局。使用MvvmCross时,我需要使用BindingContext:
convertView = BindingContext.BindingInflate(templateId, parent, false);
此BindingContext是一个
IMvxAndroidBindingContext
,由构造函数设置。对于其他有相同问题的人,我回答自己的问题
问题是,我试图从普通上下文中取消布局。使用MvvmCross时,我需要使用BindingContext:
convertView = BindingContext.BindingInflate(templateId, parent, false);
此BindingContext是一个IMvxAndroidBindingContext
,由构造函数设置
convertView = BindingContext.BindingInflate(templateId, parent, false);