【问题标题】:How do I store multiple playlist in shared preference如何在共享首选项中存储多个播放列表
【发布时间】:2016-11-03 02:27:56
【问题描述】:

我正在创建一个媒体播放器应用程序,用户可以在其中播放来自本地库或远程的歌曲列表。我已将他们将从任一位置获得的歌曲存储在歌曲对象的 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', ...}  
      ]
  }
 ]

【问题讨论】:

  • 首先,您的数据是 JSON 格式的吗?因为你的不会通过解析器。如果是JSON,请参考这个post

标签: android sharedpreferences


【解决方案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

【讨论】:

    【解决方案2】:

    共享偏好不是您的最佳对象。它不是目标。它更多地用于配置。例如,您想更改应用程序的语言,您将新语言存储在首选项中。存储复杂对象不是一个好主意

    尝试使用数据库 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

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

    【讨论】:

    • 注意...我完全同意,但我试图避免编写 sqlite CRUD 查询。我将使用 sqlite 方法来实现我的任务。谢谢大家的投入。
    猜你喜欢
    • 2020-05-29
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    相关资源
    最近更新 更多