SQLite-Net-PCLを使用して、ローカルSQLite
データベースのデータを読み書きしています。アプリの 1 つのページで、クエリに一致する特定のテーブルのすべてのエントリが必要です。親モデルとの関係を持つ子エンティティも取得する必要があります。したがって、私はSQLite-Net Extensionsを使用します。モバイル デバイスでアイテムを取得するには、時間がかかる場合があります。
とにかくすべてのエントリを表示することは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);
}
このメソッドを my から呼び出して、 のViewModel
を作成しItemsSource
ますListView
。
public ObservableCollection<Item> Items
private async void GetItems()
{
Items = await DatabaseHelper.GetItemsByQueryAsync(SearchQuery);
}
これは の XAML コードですListView
(テンプレート コードは削除しました)。
<ListView x:Name="Items_ListView" ItemsSource="{Binding Items}" />