web-dev-qa-db-fra.com

Mettre et obtenir un tableau de chaînes à partir des préférences partagées

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.

54
Gabrielle

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.

92
Egor

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);
28
MikeL

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?

8
Jeff Gilfelt

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;
}
0
Hitesh Tarbundiya
HashSet<String> mSet = new HashSet<>();
                mSet.add("data1");
                mSet.add("data2");
saveStringSet(context, mSet);

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";
0
Dan Alboteanu