当前位置: 首页 > 知识库问答 >
问题:

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

张英范
2023-03-14

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

 @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的库android.arch.persistence.room,但它不允许表中的对象引用。有没有办法通过使用Android的房间缓存歌曲列表?

共有2个答案

贺季同
2023-03-14

如果要将某种类型的ArrayList保存到数据库中,应使用TypeConverter将ArrayList从数据库引擎转换为更简单的可识别类型,如字符串

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

乐健
2023-03-14

此外,如果您想存储一些自定义对象,您可以使用@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;
} 
 类似资料:
  • 问题内容: 我有一个要存储在Redis中的对象数组。我可以分解数组部分,并将它们存储为对象,但是我不知道如何获得类似 然后根据名称搜索数据库,并获取返回的密钥。我需要这样的东西。但几乎无法做到正确。 首先是使这一部分正确。 其次是以某种方式从值中获取密钥,即 我觉得很难。或者,我可以将其直接存储为对象数组并使用简单的for循环。 请建议哪种路线最适合某些实现? 问题答案: 我发现工作是将密钥存储为

  • 我是android studio的初学者,希望在room数据库中存储语言数组列表。有人能建议我怎么做吗?

  • 如何在一个对象中存储对象和数组?更新一个对象内的对象和数组 const obj={key1:1,key2:2,key3:3,keys:['key1','key2','key3']};我在一次采访中得到了这个问题。现在我想在对象中添加一些新数据。2无论何时添加到对象中,都应在该主对象内的数组中更新“key_”(添加了key number)。 输出应该是这样的(你可以使用任何方法/函数/循环来更新它.

  • 在这种情况下,我希望返回,但当我执行代码时,它会引发一个异常,并带有以下消息: 提供的值为空 我不能使用,因为Dao返回的是,所以应该返回相同的类型。 在不改变DAO的情况下,如何检查用户是否存在?

  • 如果我在room数据库实体中使用JSONObject,我会遇到一个问题。 我有三个类,第一个类是FormEntity,它有一个子类FormDataEntity,而这个FormDataEntity类有一个子类,它有JSONObject。因此,我从api获取数据,其中有一个名为“GFPDF_FORM_Settings”的JSONObject。在此输入图像说明 因此,当从API中使用GSON转换获取数据

  • 问题内容: 因此,当请求该servlet时,我试图获取一个servlet来向用户会话添加Java对象。但是,在servlet重定向到下一页并尝试检索对象之后,我得到了一个对象。 这是将对象添加到HttpSession(在servlet中)的操作: 然后,我尝试通过(在JSP中)检索它: 那么,如何使obj不为null? 更新:我也没有尝试过这个: 在JSP中具有以下内容: 两种方法仍然返回null