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

时间:2017-12-14 14:20:35

标签: android arrays 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;
      ......
 }

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

2 个答案:

答案 0 :(得分:2)

此外,如果您想存储一些自定义对象,您可以使用@Embedded注释,如下例所示:

class Address {
public String street;
public String state;
public String city;

@ColumnInfo(name = "post_code")
public int postCode; 
}


@Entity
class User {
@PrimaryKey
public int id;

public String firstName;

@Embedded
public Address address;
} 

答案 1 :(得分:1)

如果要将某种类型的ArrayList保存到数据库中,可以使用TypeConverter将ArrayList从一个更简单的可识别类型转换为数据库引擎,如String。< / p>

看到这个: Android Room Database: How to handle Arraylist in an Entity?https://commonsware.com/AndroidArch/previews/room-and-custom-types