2015-05-07 2 views
-3

В настоящее время у меня есть ContentProvider, который извлекает список ресурсов с удаленного сервера. Данные хранятся в базе данных SQLite.Лучший способ сохранить список в Android

Из этого списка пользователи смогут добавлять в свои избранные товары. Их приложение затем должно будет отслеживать идентификаторы из списка. Каков наилучший способ отслеживания списка избранных?

Я думал несколько ...

  1. Есть флаг в таблице SQLite, чтобы отметить, если оно было добавлено в избранное.
  2. Сериализация список идентификаторов и магазин с помощью общих предпочтения
  3. магазин это с помощью другого SQLite базы данных

ответ

1

На мой взгляд первый, имеющий флаг в SQlite таблице, чтобы отметить ряд как фаворит лучших вариантов. При таком подходе вы читаете данные один раз из db, и знаете, какие из них отмечены как избранные.

4

Это зависит от ситуации.

Я бы порекомендовал вариант 1, так как он сохранит вашу структуру данных просто, и вы просто добавите еще один флаг. (Это потребует, чтобы вы изменили таблицу, если она уже жива?)

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


Вариант 2 действительно плохая идея, и это будет очень медленно. (медленный по сравнению с решениями sqlite)


Вариант 3. Вам не требуется другая база данных SQLite. Вам нужно будет добавить новую модель, которая относится к основной модели данных. Но это имеет смысл только в том случае, если у вас есть отношение 1: n.

0

Я думаю, что ваша первая мысль - лучшая, так как вам не обязательно сопоставлять данные во второй раз.

1

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

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

Идентификаторы в этой таблице будут служить внешним ключом для ссылки на основную таблицу.

+0

Мне нравится эта идея, но как это работает в отношении ContentProviders? Мне нужен какой-то способ «объединить» таблицы вместе, что является моей главной проблемой. – mushroom

+0

Вам нужно будет создать отдельный класс «DBHelper», который будет обрабатывать все элементы базы данных. При этом выполните запрос SQL JOIN для ... well..join tables вместе. – user2818782

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