2015-09-29 3 views
1

Я создаю приложение, которое должно выполнить запрос HTTP или запрос sql на основе критериев сортировки.Изменить адаптер на основе критериев сортировки

Когда критерии сортировки Popularity или Vote Я называю API. Когда критерии Favorite Я использую базу данных SQLite.

В настоящее время у меня есть пользовательский адаптер, который расширяет BaseAdapter для получения данных из http-запроса. Я также использую этот адаптер для запроса sql, но мне нужно вручную выполнить запрос sql и уведомить адаптер об изменениях.

Для запроса sql я хотел бы использовать адаптер курсора, чтобы легко использовать некоторые функции, такие как загрузчики.

Мой вопрос: Возможно ли это/Хорошая практика состоит в том, чтобы иметь два адаптера и переключать их по критериям сортировки?

Если нет, что мне делать? У меня есть некоторые идеи, такие как создание пользовательского AsyncTaskLoader или сохранение результатов HTTP в базе данных с записью isFavorite, поэтому я смогу использовать только CursorAdapter.

+0

используйте один адаптер: '[Simple] CursorAdapter' и пользовательский ContentProvider – pskink

+0

, но он предполагает, что все мои данные находятся в базе данных. В настоящее время у меня есть только избранные элементы в моей базе данных. – ThomasThiebaud

+1

никакой разницы ... вы можете либо получить доступ к db, либо ваш API в пользовательском 'ContentProvider' – pskink

ответ

1

Возможно ли это/Хорошая практика состоит в том, чтобы иметь два адаптера и до переключать их по критериям сортировки?

Зачем вам два адаптера? Вам действительно нужно, чтобы ваш Activity/Fragment реализовал интерфейс CursorLoader и использовал его в сочетании с подклассом CursorAdapter. После того, как ваш запрос HTTP вернется с новыми данными, вы обновите свою базу данных и сообщите об этом Uri. Android предложит повторно запросить вашу базу данных. onLoadFinish вам нужно будет только поменять курсор

+0

Я не хочу сохранять все данные в базе данных. Я просто хочу сохранить данные в базе данных, когда пользователь нажимает кнопку избранного. – ThomasThiebaud

+1

вы все равно можете использовать поставщик контента и механизм загрузчика курсора. Обновление сохранит ответ в памяти во время выполнения, и запрос может вернуть курсор, который вы можете создать вручную. – Blackbelt

+0

Большое спасибо, я попробую его сегодня вечером. – ThomasThiebaud

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