C# 网格内部列表-适配器布局mvxexception

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

我尝试在ListView中显示GridView。我想显示按某些属性分组的图像

我的Listview(信息:我删除了以下代码段中的所有布局选项(可读性更好):

上面的
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);