0

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

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

1 回答 1

0

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

您必须在循环创建一个列表,并且只将每个项目添加到 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);

希望这可以帮助。

于 2012-04-24T07:44:17.663 回答