如何在Android中使用Room存储对象数组?
我想在我的应用程序中缓存歌曲列表,歌曲列表结构如下:如何在Android中使用Room存储对象数组?,android,arrays,android-room,Android,Arrays,Android Room,我想在我的应用程序中缓存歌曲列表,歌曲列表结构如下: @Entity public class Songlist { String _id; String desc; List<SongDesc> songWithComment; ..... public static class SongDesc { String comment; Song song; } } @Entity pul
@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;
......
}
@实体
公共类歌曲列表{
字符串_id;
字符串描述;
列出有评论的歌曲;
.....
公共静态类SongDesc{
字符串注释;
宋松;
}
}
@实体
搏动类歌曲{
字符串名;
字符串类型;
......
}
操作sqlite3的库是,但它不允许在表中引用对象。有没有办法在Android中使用Room缓存歌曲列表?如果要将某种类型的ArrayList保存到数据库中,您应该使用
TypeConverter
将ArrayList从数据库引擎转换为更简单的可识别类型,如字符串
见此:
而且如果您想存储一些自定义对象,可以使用@Embedded annotation,如下面的示例所示:
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;
}
您需要单独的
@Entity
类对数据库结构进行建模(例如,SonglistEntity
,songtentity
),其中歌曲与父项之间有@ForeignKey
关系。感谢回复!一首歌可能包含无数个歌曲列表,而一个歌曲列表包含有限的歌曲,也许我应该在歌曲列表中使用@ForeignKey
?但我不知道如何处理这个列表…您列出的链接明确指出,这是第二个选项。