android 从共享首选项中放置和获取字符串数组

oyt4ldly  于 2022-12-31  发布在  Android
关注(0)|答案(5)|浏览(135)

我需要在共享首选项中保存一些字符串数组,然后再获取它们。我尝试了以下方法:
prefsEditor.putString(PLAYLISTS, playlists.toString());,其中播放列表是String[]
并得到:
playlist= myPrefs.getString(PLAYLISTS, "playlists");,其中播放列表是String,但它不工作。
我该怎么做呢?

ivqmmu1c

ivqmmu1c1#

您可以创建自己的数组String表示形式,如下所示:

StringBuilder sb = new StringBuilder();
for (int i = 0; i < playlists.length; i++) {
    sb.append(playlists[i]).append(",");
}
prefsEditor.putString(PLAYLISTS, sb.toString());

然后,当你从SharedPreferences中获取String时,只需像这样解析它:

String[] playlists = playlist.split(",");

这个应该可以了。

roqulrg3

roqulrg32#

从API级别11开始,您可以使用putStringSet和getStringSet来存储/检索字符串集:

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);
5lwkijsr

5lwkijsr3#

可以使用JSON将数组序列化为字符串并将其存储在首选项中。请参阅我的答案和示例代码以了解类似的问题:
如何编写代码,使sharedpreferences阵列在android?

sdnqo3pr

sdnqo3pr4#

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();
}

以及

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";
92vpleto

92vpleto5#

如果你想要更多的信息Click here,使用这个简单的函数在preference中存储数组列表

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();
    }
}

以及如何从preference中获取存储的数组列表

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;
}

相关问题