SQLite-Net部分填充ListView

本文关键字:ListView 填充 SQLite-Net | 更新日期: 2023-09-27 18:16:30

我使用SQLite-Net-PCL来读取和写入数据到本地SQLite数据库。在我的应用程序的一页,我需要从一个特定的表匹配查询的所有条目。我还需要检索与父模型有关系的子实体。因此,我使用SQLite-Net扩展。在移动设备上获取项目可能需要一些时间。

由于ListView无法显示所有条目-我想加载即前100个条目,然后当用户滚动ListView时加载所有其余条目。

我写了一个DatabaseHelper,它提供了以下方法:

public async static Task<ObservableCollection<Item>> GetItemsByQueryAsync(string query)
{
    List<Item> models = null;
    var conn = new SQLiteAsyncConnection(() => getAsyncSQLiteConnection());
    models = await conn.GetAllWithChildrenAsync<Item>(i => i.name.Contains(query));
    return new ObservableCollection<Item>(models);
}

我从我的ViewModel调用这个方法来为ListView创建ItemsSource:

public ObservableCollection<Item> Items
private async void GetItems()
{
    Items = await DatabaseHelper.GetItemsByQueryAsync(SearchQuery);
}

这是ListView的XAML代码(我删除了模板代码)

<ListView x:Name="Items_ListView" ItemsSource="{Binding Items}" />

SQLite-Net部分填充ListView

您正在寻找的是实现在框架(https://msdn.microsoft.com/library/windows/apps/Hh701916)中构建的ISupportIncrementalLoading接口

一个很好的例子可以在这里找到:https://marcominerva.wordpress.com/2013/05/22/implementing-the-isupportincrementalloading-interface-in-a-window-store-app/