Je dois enregistrer sur les préférences partagées un certain nombre de chaînes et ensuite pour les obtenir. J'ai essayé ceci:
prefsEditor.putString(PLAYLISTS, playlists.toString());
où les listes de lecture sont un String[]
et pour obtenir:
playlist= myPrefs.getString(PLAYLISTS, "playlists");
où playlist est un String
mais cela ne fonctionne pas.
Comment puis-je faire ceci ? Quelqu'un peut-il m'aider?
Merci d'avance.
Vous pouvez créer votre propre représentation String du tableau comme ceci:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < playlists.length; i++) {
sb.append(playlists[i]).append(",");
}
prefsEditor.putString(PLAYLISTS, sb.toString());
Ensuite, lorsque vous obtenez la chaîne de SharedPreferences, analysez-la simplement comme ceci:
String[] playlists = playlist.split(",");
Cela devrait faire l'affaire.
Depuis l'API niveau 11, vous pouvez utiliser putStringSet et getStringSet pour stocker/récupérer des jeux de chaînes:
SharedPreferences pref = context.getSharedPreferences(TAG, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putStringSet(SOME_KEY, someStringSet);
editor.commit();
SharedPreferences pref = context.getSharedPreferences(TAG, Context.MODE_PRIVATE);
Set<String> someStringSet = pref.getStringSet(SOME_KEY);
Vous pouvez utiliser JSON pour sérialiser votre tableau sous forme de chaîne et le stocker dans les préférences. Voir ma réponse et un exemple de code pour une question similaire ici:
Comment écrire du code pour faire des préférences partagées pour un tableau sous Android?
Stockez la liste des tableaux de préférence en utilisant cette fonction simple, si vous voulez plus d'informations Cliquez ici
public static void storeSerializeArraylist(SharedPreferences sharedPreferences, String key, ArrayList tempAppArraylist){
SharedPreferences.Editor editor = sharedPreferences.edit();
try {
editor.putString(key, ObjectSerializer.serialize(tempAppArraylist));
editor.apply();
} catch (IOException e) {
e.printStackTrace();
}
}
Et comment obtenir une liste d'arrays stockée de préférence
public static ArrayList getSerializeArraylist(SharedPreferences sharedPreferences, String key){
ArrayList tempArrayList = new ArrayList();
try {
tempArrayList = (ArrayList) ObjectSerializer.deserialize(sharedPreferences.getString(key, ObjectSerializer.serialize(new ArrayList())));
} catch (IOException e) {
e.printStackTrace();
}
return tempArrayList;
}
HashSet<String> mSet = new HashSet<>();
mSet.add("data1");
mSet.add("data2");
saveStringSet(context, mSet);
où
public static void saveStringSet(Context context, HashSet<String> mSet) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = sp.edit();
editor.putStringSet(PREF_STRING_SET_KEY, mSet);
editor.apply();
}
et
public static Set<String> getSavedStringSets(Context context) {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
return sp.getStringSet(PREF_STRING_SET_KEY, null);
}
private static final String PREF_STRING_SET_KEY = "string_set_key";