【问题标题】:Is there any way to store Observable variables in Room persistance table?有什么方法可以将 Observable 变量存储在 Room 持久性表中?
【发布时间】:2017-10-27 07:33:57
【问题描述】:

我正在使用 Room 库为我的应用程序保存和检索数据。模型类 User 具有变量,例如 - Observable 名称等,其中 Observable 是 RxJava 类。但是现在 gradle build 失败了,原因是 - error: Cannot figure out how to save this field into database。你可以考虑为它添加一个类型转换器。

所以我正在寻找如何将 Observable 变量保存到表中? 我知道类型转换器,但无法做到这一点。就像将字符串值从 Observable 保存到数据库,然后当我们从数据库中获取数据时再次将其转换为 Observable。

请问有什么提示吗?

【问题讨论】:

  • 为什么要将 Observable 存储到数据库中?
  • 这样我就可以观察从 Room 数据库中检索到的模型类对象的变化。请参阅我从 Room 获取用户列表,并且用户对象具有可观察的名称变量,例如class User { Observable name} 这样我就可以在这个变量本身上添加 obeserver。
  • 这里是观察模型变化的方法medium.com/google-developers/room-rxjava-acb0cd4f3757

标签: android rx-java rx-android android-room


【解决方案1】:

你可以做类似的事情

@Entity(tableName = "my_table")
public class MyTable { 

    @ColumnInfo(name = "my_string_value")
    public String myStringValue;
}

然后创建你的 DAO

@Dao
public class MyTableDao {

    @Query("select my_string_value from my_table limit 1 ") 
    Flowable<String> selectMyStringValue();

}


Flowable<String> flowable = myAppDataBase.getMyTableDao().selectMyStringValue();

我不知道你为什么要保存 Observable...但首先你不应该。

要使用上面的代码,您必须添加 RxJava2 依赖项,因为 Flowable。

【讨论】:

    猜你喜欢
    • 2011-02-27
    • 1970-01-01
    • 2015-12-26
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 2012-10-30
    • 1970-01-01
    相关资源
    最近更新 更多