Какой CursorAdapter я должен использовать? - PullRequest
9 голосов
/ 21 ноября 2011

CursorAdapter имеет 3 конструктора.Давайте посмотрим на руководство и справку.

1) CursorAdapter (Context context, Cursor c)

Этот конструктор устарел. ЭтотНе рекомендуется использовать этот параметр, так как это приводит к тому, что запросы курсора выполняются в потоке пользовательского интерфейса приложения, что может привести к плохой отзывчивости или даже к ошибкам приложения не отвечает.В качестве альтернативы используйте LoaderManager с CursorLoader.

2) CursorAdapter (контекстный контекст, Cursor c, логический автозапрос)

Конструктор, который позволяет управлять автозапросом. Рекомендуется не использовать этот , а использовать CursorAdapter (Context, Cursor, int).

3) CursorAdapter (Контекстный контекст, Cursor c, int flags)

Рекомендуемый конструктор.

flags Флаги, используемые для определения поведения адаптера;может быть любой комбинацией FLAG_AUTO_REQUERY и FLAG_REGISTER_CONTENT_OBSERVER.

FLAG_AUTO_REQUERY Эта константа устарела .Этот параметр не рекомендуется, так как он приводит к тому, что запросы курсора выполняются в потоке пользовательского интерфейса приложения и, таким образом, могут вызвать плохую отзывчивость или даже ошибки приложения не отвечает.В качестве альтернативы используйте LoaderManager с CursorLoader.

FLAG_REGISTER_CONTENT_OBSERVER. Этот флаг не требуется при использовании CursorAdapter с CursorLoader.

CursorAdapter (контекстный контекст, Cursor c, int flags) является рекомендуемым конструктором, но возможные флаги: 2одна устарела, а другая не нужна при использовании CursorAdapter с CursorLoader.Если я использую CursorAdapter с CursorLoader, я должен использовать этот конструктор и передать ноль в качестве флага?И в этом случае конструктор - это то же самое, что и устаревший # 1?

Ответы [ 3 ]

6 голосов
/ 21 ноября 2011

Используя # 1, по умолчанию адаптер автоматически запрашивает. Это отличается от # 3, потому что вы можете указать, хотите ли вы автоматически запрашивать (что не следует делать, согласно документации). Таким образом, нет, № 1 и № 3 не совпадают, если вы передаете конструктор № 3 0.

1 голос
/ 21 ноября 2011

CursorAdapter является абстрактным классом и не может быть создан как таковой.

Также имейте в виду, что третий конструктор предназначен только для API 11+.

0 голосов
/ 25 октября 2013

Вам необходимо выполнить миграцию с помощью LoaderManager и Loader.

потому что, скорее всего, все будет устаревшим.так что лучше использовать CursorLoader с LoaderManager и Loader

. Образец проекта можно найти по ссылке ниже, которая получает список приложений, установленных на любом телефоне.

https://github.com/alexjlockwood/AppListLoader.git

Удачи ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...