Arrays 在Xamarin表单的列表视图中添加和显示数组项

Arrays 在Xamarin表单的列表视图中添加和显示数组项,arrays,listview,xamarin,Arrays,Listview,Xamarin,[在此处输入图像描述][1]我正在尝试在列表视图中添加和显示所选数据,但不幸的是无法在列表视图中显示数据,如果有人可以帮助,谢谢! (这是我的代码版本) 名称空间AppContacts { 公共部分类主页:ContentPage { SQLiteAsyncConnection _connection=DependencyService.Get().GetConnection(); 公共主页() { 初始化组件(); this.BindingContext=this; ReadSelectedDa

[在此处输入图像描述][1]我正在尝试在列表视图中添加和显示所选数据,但不幸的是无法在列表视图中显示数据,如果有人可以帮助,谢谢! (这是我的代码版本)

名称空间AppContacts
{
公共部分类主页:ContentPage
{
SQLiteAsyncConnection _connection=DependencyService.Get().GetConnection();
公共主页()
{
初始化组件();
this.BindingContext=this;
ReadSelectedData();
}
public void ReadSelectedData()
{
int[]intArray;
intArray=新整数[4];
intArray[0]=175;
intArray[1]=197;
intArray[1]=757;
intArray[3]=915;
var list=_connection.Table().ToListAsync().Result;
var myAL=new ArrayList();
foreach(intArray中的int行列表)
{
var NewItem=list.Where(x=>x.Contact_ID.Equals(rowList));
myAL.Add(新项目);
}
}
}
}
添加了模型类和XAML页面,XAML页面名称为ContentPage1

XAML页面 页面名称为ContentPage1


模范班

使用SQLite
名称空间AppContacts.Models
{
公共类联系人
{
[主密钥][自动增量]
public int Contact_ID{get;set;}
公共字符串联系人名称{get;set;}
公共字符串联系人地址{get;set;}
公共字符串联系人_电子邮件{get;set;}
}
}
[输出][1]
[在此处输入图像描述][2]
[1]: https://i.stack.imgur.com/ci5fK.png
[2]: https://i.stack.imgur.com/ppmp2.jpg

尝试调用
OnAppearing()中的
ReadSelectedData
方法,并为列表视图设置
项资源

例如:

protected override async void OnAppearing()
{
    base.OnAppearing();

    int[] intArray;
    intArray = new int[4];
    intArray[0] = 175;
    intArray[1] = 197;
    intArray[2] = 757;
    intArray[3] = 915;

    var list = await _connection.Table<Contacts>().ToListAsync().Result;
    var myAL = new ArrayList();
    foreach (int rowList in intArray)
    {
        var NewItem = list.Where(x => x.Contact_ID.Equals(rowList));
        myAL.Add(NewItem);
    }
    listView.ItemSource = myAL;
}
应返回一个
IEnumerable
对象

因此,您可以按如下方式修改代码:

foreach (int rowList in intArray)
{
    var NewItem = list.Where(x => x.Contact_ID.Equals(rowList));
    myAL.Add(NewItem.FirstOrDefault());
}
foreach (int rowList in intArray)
{
    foreach (var newitem in list)
    {
        if(newitem.Contact_ID == rowList)
        {
            myAL.Add(newitem);
        }
    }
}
使用
NewItem.FirstOrDefault()
获取
联系人
对象

否则,您不能使用可枚举方法。如果方法要执行此操作,也可以使用
foreach
实现以下目的:

foreach (int rowList in intArray)
{
    var NewItem = list.Where(x => x.Contact_ID.Equals(rowList));
    myAL.Add(NewItem.FirstOrDefault());
}
foreach (int rowList in intArray)
{
    foreach (var newitem in list)
    {
        if(newitem.Contact_ID == rowList)
        {
            myAL.Add(newitem);
        }
    }
}

1) 不要在异步操作中使用
Result
,学习使用async/wait,2)不要在循环中分配ItemsSource,在循环完成后执行,3)是否确定
myAL
实际包含数据?4)LIstView的XAML在哪里?嗨,您需要先检查
list
是否包含数据,然后可以检查
NewItem
是否包含匹配的数据。@Jason感谢您的及时回复,已经在循环后尝试了ItemSource,还使用了async/await,myAL在检查断点时确实包含了数据。这可能是XAML的问题,但由于您没有发布“很难说hi@Junior_Jiang”的帖子,谢谢您的回复,所以在使用断点检查时,列表确实包含了数据,NewItem也包含了匹配的数据!非常感谢@Junior Jiang MSFT,按照您的建议进行了尝试,在使用断点解包时显示每个数组项,但列表视图仍然为空@EmDe你能不能把
myAL
的字符串数据用断点截图更好地显示出来?Jian MSFT,我手机的截图添加了,谢谢你的帮助!您好@Junior Jiang MSFT,谢谢您一直在帮助我并要求链接共享,请给我一点时间创建一个新的数据文件与您共享链接,再次感谢您的帮助!蒋MSFT,谢谢,答案很有用我点击了标记