J'essaie d'insérer des données dans la base de données SQLite et que j'ai écrit une méthode simple pour insérer les données que je reçois de l'API comme indiqué ci-dessous:Comment insérer une liste d'objets en utilisant ContentValues.put()?
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;
}
Je reçois pour la dernière
game.original_game_rating();
qui est correctement justifiée car il s'agit d'une liste d'objets.
Ma classe d'objet nommé "GameInfoList" qui est passé comme paramètre dans la méthode est illustré ci-dessous:
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();
EDIT
J'ai aussi objet GameRatings comme indiqué ci-dessous:
@Nullable
public abstract String api_detail_url();
public abstract long id();
@Nullable
public abstract String name();
Maintenant je veux insérer le nom à l'intérieur du tableau pour le classement du jeu pour lequel j'ai modifié le code comme suit:
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;
}
Est-ce exact?
La base de données sqlite stocke uniquement les valeurs primitives. vous avez besoin de le stocker sous forme de texte et le temps de l'utiliser, vous pouvez le convertir en liste –
Quel est votre schéma pour la table dans laquelle vous allez insérer ces données? Plus précisément, quel est le type de données de la colonne identifiée comme "COLUMN_GAME_ORIGINAL_RELEASE_DATE"? – CommonsWare
@CommonsWare Le type de données pour COLUMN_GAME_ORIGINAL_RELEASE_DATE est TEXTE –