2013-02-21 2 views
1

Заранее спасибо.pagination in listview

Я разрабатываю приложение для обзора автомобилей, где пользователь может войти в систему и отобразить весь обзор из базы данных. Сначала все данные хранятся в MYSQLdatabase. Я использую json для подключения к базе MYSQL и SQLiteDatabase. Но проблема в том, что после входа в экран приложения огромный нет. данных поступает с сервера и вставляется в нашу базу данных SQLite.

После этого он извлекается из базы данных и отображается на экране приложения в представлении списка, для отображения всех данных в представлении списка требуется больше времени. В этом случае я использую SimpleCursorAdapter для извлечения всех данных из базы данных.

Итак, есть ли способ, например, разбиение на страницы или что-то в этом роде, чтобы ускорить получение данных. Пожалуйста, помогите мне, указав исходный код.

ответ

3

Вы можете использовать концепцию асинхронных задач вместе с SimpleCursorAdapters.

«AsyncTask обеспечивает правильное и простое использование потока пользовательского интерфейса. Этот класс позволяет выполнять фоновые операции и публиковать результаты в потоке пользовательского интерфейса без необходимости манипулировать потоками и/или обработчиками».

Вот что вы можете сделать:

1) Получить только 1-й 10/15 элементы в 1-ом запросе. 2) Оставьте еще один запрос в качестве фоновой задачи, в то время как пользователь проверяет первые 10/15 элементов.

Это, безусловно, сделает опыт пользователя быстрее

+0

Можете ли вы опубликовать код, чтобы я мог понять, как это сделать? – Avijit

+0

http://stackoverflow.com/questions/9353700/setting-up-async-task-for-loading-json-into-a-listview может помочь – Scrooge

1

Используя ключевое слово LIMIT из MYSQL, вы можете достичь разбивки на страницы.

LIMIT позволяет контролировать количество строк, возвращаемых запросом:

Пример:

, чтобы показать первые 10 записей

SELECT * FROM Student LIMIT 10 //for first time 

, чтобы показать строки между 10 и 20

SELECT *FROM Student LIMIT 9, 10 //after showing the records first time 

LIMIT работы для SQLiteDatabase также

3

Вы можете использовать что-то вроде:

  • Страница 1:

    SELECT * FROM YOUR_TABLE LIMIT 20 OFFSET 0 
    
  • Page 2:

    SELECT * FROM YOUR_TABLE LIMIT 20 OFFSET 20 
    

Ссылка: http://sqlite.org/lang_select.html

1

Просьба предоставить исходный код логики/пример о том, как реализовать разбиение на страницы, если кто-то уже реализовано.

См. CommonsWare EndlessAdapter.