我把String放在SharedPreferences中就像这样
SharedPreferences preferences = getActivity().getSharedPreferences("Music_playlist", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(Song_name, Song_name);
editor.commit();
当我尝试从SharedPreferences中检索字符串时,它不会保持与存储在sharedPreferences中相同的顺序
SharedPreferences prefs = getActivity().getSharedPreferences("Music_playlist", Context.MODE_PRIVATE);
Map<String,?> keys = prefs.getAll();
if(keys!=null) {
for (Map.Entry<String, ?> entry : keys.entrySet()) {
Log.d("data ADDED",(String)entry.getValue());
PLAYLIST.add((String)entry.getValue());
}
}
如何将String存储在SharedPreferences中并在从中获取字符串时维护订单
答案 0 :(得分:1)
SharedPreferences
就像HashMap
一样,并且不会为您提供存储在其中的键值对的任何顺序。要以有序的方式存储播放列表,您需要使用单个键值对,并且值应为逗号分隔的歌曲名称列表。您实际上可以使用任何合适的分隔符(注意转义歌曲名称)或存储JSON编码数组。
这里有一些伪代码,但这并没有说明最佳做法。
SharedPreferences preferences = getActivity().getSharedPreferences("Music_playlist", Context.MODE_PRIVATE);
String playlist = preferences.getString("playlist");
playlist += "," + escapeCsv(songName);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("playlist", playlist);
editor.commit();
最好将播放列表存储在数据库中。