Comment faire pour enregistrer la Liste<Object> pour SharedPreferences?
J'ai une liste de produits, ce qui-je le récupérer à partir de webservice, lorsque l'application est ouverte pour la première fois, l'application obtient la liste des produits de webservice. Je veux enregistrer cette liste pour partagé vos préférences.
List<Product> medicineList = new ArrayList<Product>();
où les Produits de la classe est:
public class Product {
public final String productName;
public final String price;
public final String content;
public final String imageUrl;
public Product(String productName, String price, String content, String imageUrl) {
this.productName = productName;
this.price = price;
this.content = content;
this.imageUrl = imageUrl;
}
}
comment je peux enregistrer cette Liste ne demande pas de webservice à chaque fois?
- vous pouvez uniquement enregistrer des valeurs primitives de SharedPrefrences.
Vous devez vous connecter pour publier un commentaire.
Il seulement possible d'utiliser les types primitifs en raison de la préférence de garder en mémoire. Mais ce que vous pouvez utiliser est de sérialiser vos types avec Gson en json et de mettre la chaîne dans les préférences:
List<YourModel> arrayItems; String serializedObject = sharedPreferences.getString(KEY_PREFS, null); if (serializedObject != null){ Gson gson = new Gson(); Type type = new TypeToken<List<YourModel>>(){}.getType(); arrayItems = gson.fromJson(serializedObject, type); }
Vous pouvez utiliser GSON pour convertir un Objet -> JSON(.la méthode toJSON) et JSON -> Objet(.fromJSON).
Définir vos Étiquettes avec vous voulez (par exemple):
Obtenir votre sharedPreference à ces balises
Définir votre sharedPreferences
Si vous souhaitez enregistrer une gamme de Produits. Pour ce faire:
editor.putString(PRODUCT_TAG, jsonArrayProduct);
Vous devez tout d'abord le convertir en chaîne (éventuellement avec l'Gson objet dans votre code). Par exemple:gson.toJson(jsonArrayProduct)
Pour enregistrer
Pour obtenir
Vous avez actuellement deux options
a) Utiliser SharedPreferences
b) l'Utilisation de SQLite et enregistrer les valeurs dans que.
Comment effectuer
a) SharedPreferences
Premier magasin à votre Liste comme un Ensemble, et puis la convertir à une Liste quand vous lisez à partir de SharedPreferences.
Puis quand vous le lire:
b) SQLite
Un bon tutoriel: http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/
Toutes les réponses liées à JSON sont Ok mais n'oubliez pas de Java vous permet de sérialiser un objet si vous mettez en œuvre la java.io.L'interface Serializable.
De cette façon, vous pouvez enregistrer les préférences que comme un objet sérialisé trop.
Voici un exemple pour le stockage des Préférences: https://gist.github.com/walterpalladino/4f5509cbc8fc3ecf1497f05e37675111
J'espère que cela pourrait vous aider à vous comme une option.
Dans SharedPreferences vous pouvez stocker que des primitives.
Comme une approche possible est que vous pouvez utiliser GSON et de stocker des valeurs dans les préférences en JSON.
Comme l'a dit à accepté de répondre, nous pouvons enregistrer la liste d'objets, tels que:
L'obtenir à l'aide:
Vous pouvez le faire en utilisant
Gson
comme ci-dessous:List<Product>
de webserviceList
en JsonString
à l'aide denew Gson().toJson(medicineList, new TypeToken<List<Product>>(){}.getType())
SharePreferences
comme vous le faites normalementPour reconstruire votre
List
, vous devez rétablir le processus à l'aide de fromJson méthode disponible dansGson
.