以 Xamarin 形式在列表视图中添加和显示数组项

爱德

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

namespace AppContacts
{
public partial class MainPage : ContentPage
  {
  SQLiteAsyncConnection _connection = DependencyService.Get().GetConnection();

    public MainPage()
    {
        InitializeComponent();
        this.BindingContext = this;
        ReadSelectedData();
    }

    public void ReadSelectedData()
    {
        int[] intArray;
        intArray = new int[4];
        intArray[0] = 175;
        intArray[1] = 197;
        intArray[1] = 757;
        intArray[3] = 915;

        var list = _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);
        }
     }
  }

}


添加模型类和 XAML 页面,XAML 页面名称为 ContentPage1

XAML 页面页面名称为 ContentPage1

    <StackLayout>
        <ListView x:Name="listView" HasUnevenRows="True" ItemsSource="{Binding Source={x:Reference ContentPage1}, Path=BindingContext.myAL}" IsVisible="True">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <ViewCell.ContextActions>
                        </ViewCell.ContextActions>
                        <StackLayout Orientation="Vertical" VerticalOptions="CenterAndExpand">
                            <Frame>
                                <StackLayout Orientation="Vertical" VerticalOptions="Center" >
                                    <Label Text="Hello World" HorizontalOptions="Center"></Label>
                                    <Label Text="{Binding Contact_Address}" HorizontalOptions="Center"></Label>
                                    <Label Text="{Binding Contact_eMail}" HorizontalOptions="Center"></Label>
                                </StackLayout>
                            </Frame>
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>

模型类

using SQLite
namespace AppContacts.Models
{
    public class Contacts
    {
        [PrimaryKey][AutoIncrement]
        public int Contact_ID { get; set; }
        public string Contact_Name { get; set; }
        public string Contact_Address {get; set; }        
        public string Contact_eMail { get; set; }
    }
}

[Output][1]


  [enter image description here][2]


  [1]: https://i.stack.imgur.com/ci5fK.png
  [2]: https://i.stack.imgur.com/ppmp2.jpg
小江

尝试在 中调用ReadSelectedData方法OnAppearing(),并设置ItemsSourceListView

例如:

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;
}

============================更新==================== ========

我查看了有关Enumerable.Where Method的文档,您可以看到方法返回的不是TSource对象。

public static System.Collections.Generic.IEnumerable Where >(this System.Collections.Generic.IEnumerable source, Func<TSource,bool> >predicate);

它返回一个IEnumerable<TSource>对象,因此您的代码:

var NewItem = list.Where(x => x.Contact_ID.Equals(rowList));

应该返回一个IEnumerable<Contacts>对象。

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

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

使用NewItem.FirstOrDefault()得到的Contacts对象。

否则,你不能使用Enumerable.Where 方法来做,也可以使用foreach如下实现:

foreach (int rowList in intArray)
{
    foreach (var newitem in list)
    {
        if(newitem.Contact_ID == rowList)
        {
            myAL.Add(newitem);
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 xamarin 形式的不同宽度的列表视图中显示不同长度的文本

Xamarin表单图像未显示在列表视图中

如何将 pubnub 服务器中的数据以 xamarin 形式添加到列表视图中

Xamarin表单列表视图中的发现和元素

xamarin 中的列表视图中的空视图

以Xamarin形式显示数据列表

Xamarin表单:在列表视图中获得控制

Xamarin:更改列表视图中的标签文本

列表视图中的 xamarin 表单设计

Xamarin 列表视图在滚动视图中时未显示完整项目

如何从 xamarin 形式的列表视图中获取所选项目索引?

在Xamarin android中将json数组响应绑定到列表视图中的列表行

列表视图项不在xamarin中显示

如何在Xamarin Forms的列表视图中的多个项目中添加图像单元格

Android C#Xamarin。如何在列表视图中显示关联的表?

Xamarin.Forms在列表视图中显示特定项目的不同数据模板

Xamarin形式和PushSharp

在表视图中快速显示数组项

在集合视图中分组和显示不同类型的项目-Xamarin Forms

Prism部分视图xamarin形式

垂直列表视图中的 Xamarin Forms Center 项目

Xamarin 表单:如何从列表视图中隐藏重复的月份名称?

如何禁用列表视图中的单击?xamarin.form

Xamarin 图像源绑定回退到列表视图中的模型

如何使用Xamarin在单元格视图中显示数据

Xamarin.Forms Shared在Android视图中不显示图像,但在iOS视图中显示图像

Linphone和Xamarin形式;如何设置远程和本地视图?

xamarin 形式的列表视图项上的长按事件

序列不包含用于列表视图的xamarin形式的元素