2014-09-07 3 views
2

Я сделал свое приложение с использованием TListView, чтобы показать основной набор данных как список, чтобы перемещаться по записям. Я использовал LiveBindings с Sync < -> *.TListView запись по запросу

Основная проблема заключается в том, что он загружает всю таблицу в память. Это происходит очень медленно, и теперь он доводит его до андроида даже хуже.

Я не нашел никакого примера о том, как это сделать. Я не использую sql, я использую собственный DataSet (Aurelius), который извлекает записи по требованию.

Поскольку я не нашел никакой документации, у меня нет отправной точки или кода для обмена.

Как сделать записи загрузки TListView по запросу?

PS. есть вопрос similar SO, но это может быть разрешено оператором SQL. У меня нет SQL-данных, и мне интересно, действительно ли с реальной версией FMX может быть лучший подход.

+0

Для синхронизации загрузки из базы данных должно быть возможно использовать 'LiveBindings'. См. [Update-listview-item-attributes-on-fly-when-use-livebindings] (http://delphi.radsoft.com.au/2013/09/updating-listview-item-attributes-on-the-the- -fly-когда-используя-LiveBindings /). См. Также [Мобильное руководство: использование LiveBindings для заполнения ListView (iOS и Android)] (http://docwiki.embarcadero.com/RADStudio/XE6/en/Mobile_Tutorial:_Using_LiveBindings_to_Populate_a_ListView_ (iOS_and_Android)). –

+0

@LURD Спасибо, я уже использую LiveBindings, я отредактировал свой вопрос, чтобы утверждать, что, поскольку я предполагал, что LiveBindings будет стандартом по умолчанию для FMX. Использование свойства Sync для TListView действительно работает, но оно загружает весь DataSet, я хочу, чтобы он загружал то, что необходимо для отображения, или хотя бы небольшое число (страницы) –

+1

для downvoter: пожалуйста, оправдайте свое мнение. Конечно, вы знаете ответ на мой вопрос, так как считаете это неправильным. –

ответ

0

¨ Ваша проблема не в списке, а в вашем наборе данных. Настройка свойств набора данных:

  1. FetchOptions.AutoFetchAll = Отключить
  2. FetchOptios.RecRowSet = 20; // Количество строк на странице
  3. FetchOptions.Fetchmode = fmManual

в кнопки или в событии ListViewl.PullRefresh *

begin 
FDQuery.EmptyDataSet; 
FDQuery.FetchNext; 
end 

  • Событие Pullrefresh означает, что вы нажимаете listview для получения новых записей, очень распространенных в приложениях Iphone/Android. Требование свойства PullToRefresh проверяется как True
Смежные вопросы