Xamarin.android 如何从循环中创建包含多个列的自定义列表

Xamarin.android 如何从循环中创建包含多个列的自定义列表,xamarin.android,Xamarin.android,我需要通过循环两组数据来创建一个自定义列表。下面是我正在使用的,但当我将它附加到我的listview时,我只得到最后一条记录。我尝试将this.CoeListitem=新列表移动到第一个循环上方,但没有返回任何记录。那么我如何设置它来创建具有正确记录数的列表呢。 这是我的 public class CoeList [PrimaryKey, AutoIncrement] public long Id { get; set; } public string Name { get; set; }

我需要通过循环两组数据来创建一个自定义列表。下面是我正在使用的,但当我将它附加到我的listview时,我只得到最后一条记录。我尝试将this.CoeListitem=新列表移动到第一个循环上方,但没有返回任何记录。那么我如何设置它来创建具有正确记录数的列表呢。 这是我的

  public class CoeList

[PrimaryKey, AutoIncrement]
public long Id { get; set; }
public string Name { get; set; }
public string CreateDt { get; set; }
这是我的循环,第一个是获取我的Coe项目,第二个是获取每个Coe项目的所有成年人,这些项目可能很多,这就是为什么我需要两个循环

        //new loop
    List<Coe> allCoe = (List<Coe>)((OmsisMobileApplication)Application).OmsisRepository.GetAllCoe();
    if (allCoe.Count > 0)
    {
      foreach (var Coeitem in allCoe)
      {
      //take the coe id and get the adults
        List<Adult> AdultsList = (List<Adult>)((OmsisMobileApplication)Application).OmsisRepository.GetAdultByCoeMID(Coeitem.Id);
        if (AdultsList.Count > 0)
        {
          foreach (var AdltItem in AdultsList)
          {
            CoeNames += "; " + AdltItem.LName + ", " + AdltItem.FName;
          }
        }
          CoeNames = CoeNames.Substring(1);
          //ceate new list for coelist
          this.CoeListitem = new List<CoeList>()
            {
              new CoeList() { Id = Coeitem.Id, CreateDt = Coeitem.CreateDt, Name = CoeNames }
            };
      }
    }
  // End loop
  _list.Adapter = new CoeListAdapter(this, CoeListitem);
//新循环
List allCoe=(List)((OmsisMobileApplication)应用程序).OmsisRepository.GetAllCoe();
如果(allCoe.Count>0)
{
foreach(所有CoE中的var Coeitem)
{
//拿着coe id去找成年人
List AdultsList=(List)((OmsisMobileApplication)应用程序).OmsisRepository.GetAdultByCoeMID(Coeitem.Id);
如果(成人列表计数>0)
{
foreach(成人列表中的变量AdltItem)
{
CoeNames+=”;“+AdltItem.LName+”,“+AdltItem.FName;
}
}
CoeNames=CoeNames.Substring(1);
//ceate coelist的新列表
this.CoeListitem=新列表()
{
新建CoeList(){Id=Coeitem.Id,CreateDt=Coeitem.CreateDt,Name=CoeNames}
};
}
}
//端环
_list.Adapter=新的CoeListAdapter(这个,CoeListitem);

您的问题在于,在循环的每次迭代中,您都在重新创建整个列表,并丢失所有先前的项(您将一个新的列表分配给变量,其中只有一项)。因此,在循环结束时,您只有一项

您必须在循环之外创建一个列表,并且只将每个项目添加到lop正文中的列表中

// create the new list first
this.CoeListitem = new List<CoeList>();

var application = (OmsisMobileApplication) Application;
List<Coe> allCoe = (List<Coe>) application.OmsisRepository.GetAllCoe();
foreach (var Coeitem in allCoe) //new loop
{
    //take the coe id and get the adults
    List<Adult> AdultsList = (List<Adult>) application.OmsisRepository.GetAdultByCoeMID(Coeitem.Id);
    foreach (var AdltItem in AdultsList)
    {
        CoeNames += "; " + AdltItem.LName + ", " + AdltItem.FName;
    }
    CoeNames = CoeNames.Substring(1);

    // Add the item to the existing list
    this.CoeListitem.Add(new CoeList { Id = Coeitem.Id, CreateDt = Coeitem.CreateDt, Name = CoeNames });
} // End loop

// give the list to the adapter
_list.Adapter = new CoeListAdapter(this, CoeListitem);
//首先创建新列表
this.CoeListitem=新列表();
var应用程序=(OmsisMobileApplication)应用程序;
List allCoe=(List)application.omisrepository.GetAllCoe();
foreach(var Coeitem in allCoe)//新循环
{
//拿着coe id去找成年人
List AdultsList=(List)application.omisrepository.GetAdultByCoeMID(Coeitem.Id);
foreach(成人列表中的变量AdltItem)
{
CoeNames+=”;“+AdltItem.LName+”,“+AdltItem.FName;
}
CoeNames=CoeNames.Substring(1);
//将项目添加到现有列表中
this.CoeListitem.Add(新的CoeList{Id=Coeitem.Id,CreateDt=Coeitem.CreateDt,Name=CoeNames});
}//结束循环
//将列表提供给适配器
_list.Adapter=新的CoeListAdapter(这个,CoeListitem);
希望这有帮助