C# Xamarin Android:为什么在recyclerview上用三个键按组划分元素不起作用?

C# Xamarin Android:为什么在recyclerview上用三个键按组划分元素不起作用?,c#,xamarin.android,C#,Xamarin.android,大家好,我叫谷口 我已经实现了一个recyclerview,并将recyclerview项划分为一个组。当我尝试分成两组时,不会显示代码错误,但回收器上的所有项目都只显示viewholder textview名称 如下图所示: 第一类名单: public class DateNow : ListItem { public string dateNow{ set; get; } public override int getType() { return

大家好,我叫谷口

我已经实现了一个recyclerview,并将recyclerview项划分为一个组。当我尝试分成两组时,不会显示代码错误,但回收器上的所有项目都只显示viewholder textview名称

如下图所示:

第一类名单:

public class DateNow : ListItem
{
    public string dateNow{ set; get; }
    public override int getType()
    {
        return TYPE_HEADER_NOW;
    }

}
 public class DateYesterday : ListItem
{
    public string dateYesterday { set; get; }
    public override int getType()
    {
        return TYPE_HEADER_YESTERDAY;
    }
}
第一观众:

public class RecyclerViewNowHolder : RecyclerView.ViewHolder
{

    public TextView mDateNow;

    public RecyclerViewNowHolder(View itemView) : base(itemView)
    {
        mDateNow = itemView.FindViewById<TextView>(Resource.Id.mDateNow);


    }

}
 public class RecyclerViewYesterdayHolder : RecyclerView.ViewHolder
{
    public TextView mDateYesterday;

    public RecyclerViewYesterdayHolder(View itemView) : base(itemView)
    {
        mDateYesterday = itemView.FindViewById<TextView>(Resource.Id.mDateYesterday);

    }
}
第二个持证人:

public class RecyclerViewNowHolder : RecyclerView.ViewHolder
{

    public TextView mDateNow;

    public RecyclerViewNowHolder(View itemView) : base(itemView)
    {
        mDateNow = itemView.FindViewById<TextView>(Resource.Id.mDateNow);


    }

}
 public class RecyclerViewYesterdayHolder : RecyclerView.ViewHolder
{
    public TextView mDateYesterday;

    public RecyclerViewYesterdayHolder(View itemView) : base(itemView)
    {
        mDateYesterday = itemView.FindViewById<TextView>(Resource.Id.mDateYesterday);

    }
}
我的recyclerview适配器:

  public class RecyclerAdapter : RecyclerView.Adapter
{

    private Activity mActivity;
    private List<ListItem> mEmails;
    private Context context;

    public RecyclerAdapter(List<ListItem> emails, Context context)
    {
        mEmails = emails;
        this.context = context;
    }

    public RecyclerAdapter(List<ListItem> emails, Activity activity)
    {
        mEmails = emails;
        mActivity = activity;
    }


    public class MyView : RecyclerView.ViewHolder
    {
        public View mMainView { get; set; }
        public TextView mName { get; set; }
        public TextView mSubject { get; set; }
        public TextView mMessage { get; set; }

        public MyView(View view) : base(view)
        {
            mMainView = view;
        }

    }

    public override int ItemCount
    {
        get { return mEmails.Count; }
    }

    public override int GetItemViewType(int position)
    {
        return mEmails[position].getType();
    }


    public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
    {
        if (viewType == ListItem.TYPE_HEADER_NOW)
        {
            View headNow = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.recyclerviewNow, parent, false);

            RecyclerViewNowHolder view = new RecyclerViewNowHolder(headNow);
            return view;
        }
        else if (viewType == ListItem.TYPE_HEADER_YESTERDAY)
        {
            View headYesterday = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.recyclerviewYesterday, parent, false);

            RecyclerViewYesterdayHolder view = new RecyclerViewYesterdayHolder(headYesterday);
            return view;
        }
        else
        {
            View row = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.row, parent, false);
            RecyclerViewHolder view = new RecyclerViewHolder(row);
            return view;
        }

    }
    public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
    {
        int type = GetItemViewType(position);
        if (type == ListItem.TYPE_HEADER_NOW)
        {
            RecyclerViewNowHolder myHolder = holder as RecyclerViewNowHolder;
            myHolder.mDateNow.Text = "Hoje";

        }
        else if (type == ListItem.TYPE_HEADER_YESTERDAY)
        {
            RecyclerViewYesterdayHolder myHolder = holder as RecyclerViewYesterdayHolder;
            myHolder.mDateYesterday.Text = "Ontem";

        }
        else
        {
            RecyclerViewHolder myHolder = holder as RecyclerViewHolder;
            myHolder.mDate.Text = ((Email)mEmails[position]).date;
            myHolder.mSubject.Text = ((Email)mEmails[position]).Subject;
            myHolder.mMessage.Text = ((Email)mEmails[position]).Message;
        }

    }

}   
公共类RecyclerAdapter:RecyclerView.Adapter { 私人活动能力; 私人名单成员; 私人语境; 公共回收适配器(列出电子邮件、上下文) { mEmails=电子邮件; this.context=上下文; } 公共回收适配器(列出电子邮件、活动) { mEmails=电子邮件; 活动性=活动性; } 公共类MyView:RecyclerView.ViewHolder { 公共视图mMainView{get;set;} 公共文本视图mName{get;set;} 公共文本视图mSubject{get;set;} 公共文本视图消息{get;set;} 公共MyView(视图):基本(视图) { mMainView=视图; } } 公共覆盖int ItemCount { 获取{return mEmails.Count;} } 公共覆盖int GetItemViewType(int位置) { 返回mEmails[position].getType(); } public override RecyclerView.ViewHolder OnCreateViewHolder(视图组父级,int-viewType) { 如果(viewType==ListItem.TYPE\u HEADER\u NOW) { View headNow=LayoutInflater.From(parent.Context).充气(Resource.Layout.recyclervewnow,parent,false); RecyclerViewNewHolder视图=新的RecyclerViewHolder(headNow); 返回视图; } else if(viewType==ListItem.TYPE\u HEADER\u) { View HeadDayed=LayoutInflater.From(parent.Context).充气(Resource.Layout.RecycleServiceWeestDay,parent,false); RecyclerViewEyesterDayHolder视图=新的RecyclerViewEyesterDayHolder(HeadDayHolder); 返回视图; } 其他的 { 查看行=LayoutFlater.From(parent.Context).充气(Resource.Layout.row,parent,false); RecyclerViewWolder=新的RecyclerViewWolder(行); 返回视图; } } 公共覆盖无效OnBindViewHolder(RecyclerView.ViewHolder,int位置) { int type=GetItemViewType(位置); if(type==ListItem.type\u HEADER\u NOW) { RecycleServiceWnowHolder myHolder=作为RecycleServiceWnowHolder的持有人; myHolder.mDateNow.Text=“Hoje”; } else if(type==ListItem.type\u HEADER\u) { RecyclerViewEsterDayHolder myHolder=作为RecyclerViewEsterDayHolder的持有人; myHolder.mdateDateDayed.Text=“Ontem”; } 其他的 { RecyclerViewHolder myHolder=作为RecyclerViewHolder的持有人; myHolder.mDate.Text=((电子邮件)mEmails[position])日期; myHolder.mSubject.Text=((电子邮件)mEmails[position])。主题; myHolder.mMessage.Text=((电子邮件)mEmails[position])。消息; } } } 我的主要活动课:

[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
    public static RecyclerView mRecyclerView;
    public static RecyclerView.LayoutManager mLayoutManager;
    public RecyclerView.ViewHolder holder;
    public static BottomNavigationView bottomnavigationview1;
    public static RecyclerView.Adapter mAdapter;
    public static List<Email> mEmails;
    private List<ListItem> mItems;


    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        Xamarin.Essentials.Platform.Init(this, bundle);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);

        mRecyclerView = FindViewById<RecyclerView>(Resource.Id.recyclerViwer);
        mRecyclerView.AddItemDecoration(new DividerItemDecoration(mRecyclerView.Context, DividerItemDecoration.Vertical));
        mRecyclerView.HasFixedSize = true;
        SetupList();

        //Create our layout Manager
        mLayoutManager = new LinearLayoutManager(this);
        mRecyclerView.SetLayoutManager(mLayoutManager);
        RecyclerAdapter mAdapter = new RecyclerAdapter(mItems, this);
        mRecyclerView.SetAdapter(mAdapter);

    }

    private void SetupList()
    {
        mEmails = new List<Email>();
        mEmails.Add(new Email() { date = "9/24/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/23/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "8/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "8/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "7/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "7/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "6/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "6/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "5/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "5/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "4/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "4/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/19/2018", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/19/2018", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });

        List<string> dateList = new List<string>();
            List<DateNow> dateItems = new List<DateNow>();
            List<DateYesterday> dateYesterday = new List<DateYesterday>();
        mItems = new List<ListItem>();
            foreach (var email in mEmails)
            {
                if (!dateList.Contains(email.date))
                {
                    dateList.Add(email.date);
                    dateItems.Add(new DateNow() { dateNow = email.date });
                    dateYesterday.Add(new DateYesterday() { dateYesterday = email.date });

                }

            }

            DateTime today = DateTime.Today;
            string sub = today.ToString().Substring(0, 9);

            int yesterday = Convert.ToInt32(today.Day.ToString()) - 1;

            foreach (var date in dateItems)
            {
                mItems.Add(date);
                foreach (var email in mEmails)
                {
                    if (date.dateNow.Equals(DateTime.Now.Day.ToString()))
                    {
                        mItems.Add(email);
                    }

                }
            }


    }
[活动(标签=“@string/app_name”,Theme=“@style/AppTheme”,MainLauncher=true)]
公共类MainActivity:AppCompativeActivity
{
公共静态回收视图mRecyclerView;
publicstaticrecyclerview.LayoutManager mllayoutmanager;
公共回收视图持有者;
公共静态BottomNavigationView bottomnavigationview1;
公共静态RecyclerView.AdapterMadapter;
公共静态列表成员;
私人名单;
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
Xamarin.Essentials.Platform.Init(这个包);
//从“主”布局资源设置视图
SetContentView(Resource.Layout.activity_main);
mRecyclerView=findviewbyd(Resource.Id.recyclerower);
添加装饰(新的DividerItemDecoration(mRecyclerView.Context,DividerItemDecoration.Vertical));
mRecyclerView.HasFixedSize=true;
SetupList();
//创建我们的布局管理器
mLayoutManager=新的LinearLayoutManager(此);
mRecyclerView.SetLayoutManager(mllayoutmanager);
RecyclerAdapter mAdapter=新的RecyclerAdapter(mItems,this);
mRecyclerView.SetAdapter(mAdapter);
}
私有void SetupList()
{
mEmails=新列表();
mEmails.Add(新电子邮件(){date=“9/24/2019”,Subject=“想出去玩吗?”,Message=“我明天就来!!”);
mEmails.Add(新电子邮件(){date=“9/23/2019”,Subject=“想出去玩吗?”,Message=“我明天就来!!”);
mEmails.Add(新电子邮件(){date=“9/19/2019”,Subject=“想出去玩吗?”,Message=“我明天就来!!”);
mEmails.Add(新电子邮件(){date=“9/19/2019”,Subject=“想出去玩吗?”,Message=“我明天就来!!”);
mEmails.Add(新电子邮件(){date=“9/19/2019”,Subject=“想出去玩吗?”,Message=“我明天就来!!”);
mEmails.Add(新电子邮件(){date=“8/19/2019”,Subject=“想出去玩吗?”,Message=“我明天就来!!”);
mEmails.Add(新电子邮件(){date=“8/19/2019”,Subject=“想出去玩吗?”,Message=“我明天就来!!”);
mEmails.Add(新电子邮件(){date=“7/19/2019”,Subject=“想出去玩吗?”,Message=“我明天就来!!”);
mEmails.Add(新电子邮件(){date=“7/19/2019”,Subject=“想出去玩吗?”,Message=“我明天就来!!”);
mEmails.Add(新电子邮件(){date=“6/19/2019”,Subject=“想出去玩吗?”,Message=“我明天就来!!”);
mEmails.Add(新电子邮件(){date=“6/19/2019”,Subject=“Wan
 List<string> dateList = new List<string>();
 List<DateNow> dateItems = new List<DateNow>();
 List<DateYesterday> dateYesterday = new List<DateYesterday>();
 mItems = new List<ListItem>();
 foreach (var email in mEmails)
  {
    if (!dateList.Contains(email.date))
     {
       dateList.Add(email.date);
       dateItems.Add(new DateNow() { dateNow = email.date });
       dateYesterday.Add(new DateYesterday() { dateYesterday = email.date });

      }
   }
foreach (var date in dateYesterday) {
            mItems.Add(date);
        }
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        Xamarin.Essentials.Platform.Init(this, bundle);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);

        mRecyclerView = FindViewById<RecyclerView>(Resource.Id.recyclerViwer);
        mRecyclerView.AddItemDecoration(new DividerItemDecoration(mRecyclerView.Context, DividerItemDecoration.Vertical));
        mRecyclerView.HasFixedSize = true;
        SetupList();

        //Create our layout Manager
        mLayoutManager = new LinearLayoutManager(this);
        mRecyclerView.SetLayoutManager(mLayoutManager);
        RecyclerAdapter mAdapter = new RecyclerAdapter(mItems, this);
        mRecyclerView.SetAdapter(mAdapter);

    }

    private void SetupList()
    {
        mEmails = new List<Email>();
        mEmails.Add(new Email() { date = "9/25/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/25/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/25/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/24/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/24/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/24/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/23/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "8/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "8/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "7/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "7/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "6/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "6/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "5/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "5/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "4/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "4/19/2019", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/19/2018", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });
        mEmails.Add(new Email() { date = "9/19/2018", Subject = "Wanna Hang Out?", Message = "I ' ll   be around  tomorrow!!" });

        List<string> dateList = new List<string>();
        List<DateNow> dateNow = new List<DateNow>();
        List<DateYesterday> dateYesterday = new List<DateYesterday>();

        mItems = new List<ListItem>();
        foreach (var email in mEmails)
        {
            if (!dateList.Contains(email.date))
            {
                dateList.Add(email.date);
                dateNow.Add(new DateNow() { dateNow = email.date });
                dateYesterday.Add(new DateYesterday() { dateYesterday = email.date });
            }

        }

        DateTime today = DateTime.Today;
        string sub = today.ToString().Substring(0, 9);

        int yesterday = Convert.ToInt32(today.Day.ToString()) - 1;
        string ontem = today.Month.ToString() + "/" + yesterday.ToString() + "/" + today.Year.ToString() ;

        foreach (var date in dateNow)
        {
            if (date.dateNow.Equals(sub))
            {
                mItems.Add(date);
                foreach (var email in mEmails)
                {
                    if (email.date.Equals(sub))
                    {
                        mItems.Add(email);
                    }

                }
            }
            else if (date.dateNow.Equals(ontem))
            {
                foreach (var DateYesterday in dateYesterday)
                {
                    if (DateYesterday.dateYesterday.Equals(ontem))
                    {
                        mItems.Add(DateYesterday);
                        foreach (var email in mEmails)
                        {
                            if (email.date.Equals(ontem))
                            {
                                mItems.Add(email);
                            }

                        }
                    }
                }
            }
            else
            {
                foreach (var email in mEmails)
                {
                    if (!email.date.Equals(sub) && !email.date.Equals(ontem))
                    {
                        mItems.Add(email);
                    }

                }
            }

        }

    }