2014-01-15 2 views
7

У меня есть около 100 таблиц, хранящихся в базе данных, которые должны отображать их на основе Listview на основе требований, таких как еженедельно, на следующей неделе, в следующем месяце, по соответствующим графикам и т. Д.Лучше использовать адаптер курсора или адаптер Array

Хорошо ли загружать все расписания при запуске приложения и показывать их в зависимости от того, какой пользователь выбирает (Еженедельный, просроченный, ежемесячный и т. Д.) В адаптере массива. Или во время выполнения используйте запрос, извлеките результаты из БД и используйте кузор для загрузки данных в listview с помощью cusoradapter ?.

Какой метод эффективен ?, Я чувствую, что запрос к БД всегда является эффективной? это правда ?.

+0

http://stackoverflow.com/questions/8556929/cursoradapter-vs-arrayadapter-for-a-listview Пожалуйста, взгляните на это –

+0

'Пожалуйста, закройте свой вопрос, нажав галочку слева от ответа, который помог вы большинство' –

+0

Супер, сделано @ user3110424, спасибо и извините за задержку :) – Naruto

ответ

11

В вашем случае CursorAdapter более подходит, когда есть база данных, так как она не загружает все записи как ArrayAdapter. Он загружает только видимые записи или записи, которые вы запрашиваете. Вот документация для CursorAdapter:

Адаптер, который предоставляет данные из курсора в виджет ListView.

Курсор должен содержать столбец с именем «_id» или этот класс не будет работать. Кроме того, использование MergeCursor с этим классом не будет работать, если объединенные курсоры имеют перекрывающиеся значения в своих столбцах «_id».

Как из документа Content provider, так что это может быть полезно для вас.

Вам не нужен провайдер для использования базы данных SQLite, если использование полностью находится в вашем собственном приложении.

Вы можете выбрать CursorAdapter над ArrayAdapter.

+0

Нужно ли использовать загрузчик для использования адаптера курсора? – Naruto

+1

, если вы хотите использовать Loader с адаптером курсора, см. Это [Как CursorLoader с LoaderManager знает, как отправить курсор на CursorAdapter?] (Http://stackoverflow.com/questions/11150527/how-does-cursorloader-with- loadermanager-know-to-send-the-cursor-to-a-cursoradap) –

+0

Спасибо за полезную ссылку (+1 за tat), здесь одна вещь провайдера контента и загрузчика зависит друг от друга ?, без поставщика контента я могу использовать погрузчик? вы можете уточнить мои сомнения. спасибо – Naruto

0

Лучше использовать CursorLoader

CursorLoader запускает асинхронный запрос в фоновом режиме против ContentProvider и возвращает результаты в деятельности или FragmentActivity, из которого она была вызвана. Это позволяет Activity или FragmentActivity продолжать взаимодействовать с пользователем во время выполнения запроса.

погрузчик Введенный в Android 3.0, погрузчики позволяют легко асинхронно загружать данные в деятельности или фрагмента.

+0

Что касается поддержки старых версий, таких как версии 2.0, 2.3 версий телефонов? – Naruto

+0

@LLL для работы в более низкой версии, такой как 2.2, 2.3, использует android-support-v4.jar. Подобно Fragment, представленному в API-11, но с помощью поддержки библиотеки, он также работает над более низким API. –

+0

ОК, выглядит круто. Теперь я сделал половину своей работы с массивами и базовой техникой, так что эти кусочки делают мою работу простой ?. его лучше использовать кусочки ?. – Naruto

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