0

2 つのデータ セットをループして、カスタム リストを作成する必要があります。以下は私が使用しているものですが、それをリストビューに添付すると、最後のレコードしか取得できません。私が知っている this.CoeListitem = New List を最初のループの上に移動しようとしましたが、レコードは返されませんでした。では、正しい数のレコードを含むリストを作成するには、これをどのように設定すればよいでしょうか。これが私の

  public class CoeList

[PrimaryKey, AutoIncrement]
public long Id { get; set; }
public string Name { get; set; }
public string CreateDt { get; set; }

これが私のループです。1 つ目は Coe アイテムを取得することで、2 つ目は各 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

あなたの問題は、ループの各反復でリスト全体を再作成し、以前のすべてのアイテムを失うという事実にあります(変数に1つのアイテムのみを持つ新しいリストを割り当てます)。したがって、ループの最後にはアイテムが 1 つしかありません。

ループの外側にリストを作成し、各項目を 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 に答える