2015-10-07 2 views
1

Я использую SQLite-Net-PCL для чтения и записи данных в локальную базу данных SQLite. На одной странице моего приложения мне нужны все записи из конкретной таблицы, соответствующие запросу. Мне также нужно получить дочерние сущности с отношениями к родительской модели. Поэтому я использую SQLite-Net Extensions. Получение элементов на мобильном устройстве может занять некоторое время.SQLite-Net заполнить ListView частично

Поскольку 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 создать 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}" /> 

ответ

3

Что вы ищете реализует интерфейс ISupportIncrementalLoading, который построен в рамках (https://msdn.microsoft.com/library/windows/apps/Hh701916)

Хороший пример можно найти здесь: https://marcominerva.wordpress.com/2013/05/22/implementing-the-isupportincrementalloading-interface-in-a-window-store-app/

+0

последовали примеру! Работайте отлично - Спасибо – nor0x

Смежные вопросы