如何在共享首选项中存储多个播放列表

时间:2016-06-30 20:17:08

标签: android sharedpreferences

我正在创建一个媒体播放器应用,用户可以从本地图书馆或远程播放歌曲列表。我已经存储了他们从歌曲对象的Arraylist中的任何一个位置获得的歌曲。我想要的是允许用户将歌曲列表保存为共享首选项中的播放列表,并能够向现有播放列表添加更多播放列表。我怎么做到这一点,谢谢。

store list [
  playlist: {
     id: 1,
     name: My Playlist,
     songs: 
     [
         { name: 'Song 1', album: 'Album', ...}  
         { name: 'Song 2', album: 'Album', ...}
         { name: 'Song 3', album: 'Album', ...}  
     ]
 },

  playlist: {
      id: 2,
      name: My Playlist Two,
      songs: 
      [
           { name: 'Song 1', album: 'Album', ...}  
           { name: 'Song 2', album: 'Album', ...}
           { name: 'Song 3', album: 'Album', ...}  
      ]
  }
 ]

2 个答案:

答案 0 :(得分:1)

如果你真的开始使用共享首选项,你可以将数组解析为JSONarray并以这种方式存储它。来自另一个问题的answer可能有所帮助。

我建议使用内部存储并实现类似的东西来存储你的数组:

String filename = "myfile";
String[] numbers = new String[] {"1, 2, 3"};
FileOutputStream outputStream;

try { 
  outputStream = openFileOutput(filename, Context.MODE_APPEND);
  for (String s : numbers) {  
      outputStream.write(s.getBytes());  
  }  
  outputStream.close();

} catch (Exception e) {
    e.printStackTrace();
} 

以下是Android提供的所有存储选项的链接:https://developer.android.com/guide/topics/data/data-storage.html

答案 1 :(得分:0)

共享偏好不是最适合您的对象。这不是客体。它更适用于配置。例如,您想要更改应用程序的语言,将新语言存储在首选项中。存储complexe对象不是一个好主意

尝试使用数据库sqlite。存储在数据库中并列出所有需要的信息,并用光标加载它。

https://www.google.fr/url?sa=t&source=web&rct=j&url=https://developer.android.com/training/basics/data-storage/databases.html&ved=0ahUKEwi5n96oz9DNAhXBsxQKHYeqC5kQFggjMAI&usg=AFQjCNGZO3o7XvDtwLTPzOclCuVkMgDc0A&sig2=19A1656hR_irXRh1hwn1Zg

然后您还可以使用内容提供商并获取所有本地音乐文件。