0

我像这样将字符串放在 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());
        }
    }

我应该如何在 SharedPreferences 中存储字符串并在从中获取字符串时保持顺序

4

1 回答 1

1

SharedPreferences就像 aHashMap并且不给您存储在其中的键值对的任何顺序。要以有序的方式存储播放列表,您需要使用单个键值对,并且该值应该是逗号分隔的歌曲名称列表。您实际上可以使用任何合适的分隔符(注意转义歌曲名称)或存储 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();

将播放列表存储在数据库中可能会更好。

于 2014-07-17T19:29:36.893 回答