我需要通过循环遍历两组数据来创建自定义列表。下面是我正在使用的,但是当我将它附加到我的列表视图时,我只获得了最后一条记录。我试着移动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);
答案 0 :(得分: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);
希望这有帮助。