从共享首选项中放入并获取String数组

Gab*_*lle 54 arrays string android sharedpreferences

我需要在共享首选项上保存一些字符串数组,然后才能获取它们.我试过这个:

prefsEditor.putString(PLAYLISTS, playlists.toString()); 播放列表的位置 String[]

得到:

playlist= myPrefs.getString(PLAYLISTS, "playlists");播放列表是一个String但它不起作用.

我怎样才能做到这一点 ?谁能帮我?

提前致谢.

Ego*_*gor 93

您可以像这样创建自己的数组的String表示:

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

然后,当您从SharedPreferences获取String时,只需解析它:

String[] playlists = playlist.split(",");
Run Code Online (Sandbox Code Playgroud)

这应该做的工作.

  • @Mario Lenci,我使用";; delimiter ;;" 单独的字符串 (5认同)
  • 问题是字符串不能包含用于将它们彼此分开的字符.使用此方法之前需要编码. (4认同)

Mik*_*keL 28

从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);
Run Code Online (Sandbox Code Playgroud)

  • 问题是Set没有订购.与String []相反 (13认同)

Jef*_*elt 8

您可以使用JSON将数组序列化为字符串并将其存储在首选项中.有关类似问题,请参阅我的答案和示例代码:

如何编写代码来为android中的数组做出共享偏好?