如何在 Android 中使用 Room 存储对象数组?

jai*_*ime 5 arrays android android-room

我想在我的应用程序中缓存一个歌曲列表,歌曲列表结构如下:

 @Entity
 public class Songlist {
      String _id;
      String desc;
      List<SongDesc> songWithComment;
      .....

    public static class SongDesc {
      String comment;
      Song song;
    }
}
 @Entity
 pulbic class Song {
      String name;
      String type;
      ......
 }
Run Code Online (Sandbox Code Playgroud)

运行sqlite3的lib是android.arch.persistence.room,但是它不允许表中的对象引用。有什么办法可以在Android中使用Room来缓存歌曲列表?

joa*_*o86 1

如果要将某种类型的 ArrayList 保存到数据库中,则应该使用将TypeConverterArrayList 与数据库引擎更简单可识别的类型进行转换,例如String.

请参阅: Android Room 数据库:如何处理实体中的 Arraylist? 和https://commonsware.com/AndroidArch/previews/room-and-custom-types