Как вставить список объектов с помощью ContentValues.put()?
Я пытаюсь вставить данные в базу данных SQLite и для этого я написал простой метод для вставки данных, которые я получаю из API, как показано ниже:
public static ContentValues gameInfoToContentValues(@NonNull GameInfoList game) {
ContentValues values = new ContentValues();
values.put(GameEntry.COLUMN_GAME_ID, game.id());
values.put(GameEntry.COLUMN_GAME_ALIASES, game.aliases());
values.put(GameEntry.COLUMN_GAME_API_DETAIL_URL, game.api_detail_url());
values.put(GameEntry.COLUMN_GAME_DATE_ADDED, game.date_added());
values.put(GameEntry.COLUMN_GAME_DATE_LAST_UPDATED, game.date_last_updated());
values.put(GameEntry.COLUMN_GAME_SMALL_IMAGE, game.image().small_url());
values.put(GameEntry.COLUMN_GAME_MEDIUM_IMAGE, game.image().medium_url());
values.put(GameEntry.COLUMN_GAME_HD_IMAGE, game.image().super_url());
values.put(GameEntry.COLUMN_GAME_NAME, game.name());
values.put(GameEntry.COLUMN_GAME_ORIGINAL_RELEASE_DATE, game.original_game_rating());
return values;
}
Я получаю за последнее
game.original_game_rating();
что правильно обосновано, потому что это список объектов.
Мой класс объектов с именем "GameInfoList", который передается в качестве параметра в методе, показан ниже:
public abstract long id();
@Nullable
public abstract String aliases();
@Nullable
public abstract String api_detail_url();
@Nullable
public abstract String date_added();
@Nullable
public abstract String date_last_updated();
@Nullable
public abstract GameImages image();
@Nullable
public abstract String name();
@Nullable
public abstract List<GameRatings> original_game_rating();
РЕДАКТИРОВАТЬ
У меня также есть объект GameRatings, как показано ниже:
@Nullable
public abstract String api_detail_url();
public abstract long id();
@Nullable
public abstract String name();
Теперь я хочу вставить имя в таблицу для рейтинга игры, для которого я изменил код, как показано ниже:
public static ContentValues gameInfoToContentValues(@NonNull GameInfoList game) {
ContentValues values = new ContentValues();
if(game.original_game_rating() != null) {
for(GameRatings ratings : game.original_game_rating()) {
values.put(GameEntry.COLUMN_GAME_ID, game.id());
values.put(GameEntry.COLUMN_GAME_ALIASES, game.aliases());
values.put(GameEntry.COLUMN_GAME_API_DETAIL_URL, game.api_detail_url());
values.put(GameEntry.COLUMN_GAME_DATE_ADDED, game.date_added());
values.put(GameEntry.COLUMN_GAME_DATE_LAST_UPDATED, game.date_last_updated());
values.put(GameEntry.COLUMN_GAME_SMALL_IMAGE, game.image().small_url());
values.put(GameEntry.COLUMN_GAME_MEDIUM_IMAGE, game.image().medium_url());
values.put(GameEntry.COLUMN_GAME_HD_IMAGE, game.image().super_url());
values.put(GameEntry.COLUMN_GAME_NAME, game.name());
values.put(GameEntry.COLUMN_GAME_ORIGINAL_GAME_RATING, ratings.name());
}
}
return values;
}
Это правильно?
1 ответ
У вас есть два варианта:
Избавиться от этой колонки и иметь
GameRatings
перейти в отдельную таблицу, через отношение 1:N с вашимGameEntry
(?) ТаблицаКонвертировать ваши
List<GameRatings>
в текст (например, JSON) и сохранить текст в столбце