java - 更新 LiveData 返回的对象属性

标签 java android android-room android-architecture-components android-livedata

我对更新 LiveData 从 Room 获取的对象的对象属性的最佳实践有疑问。

当前,当我的观察者在我的 Activity 中被触发时,我获取返回的对象并将其传递回 View 模型以保留引用,然后通过 View 模型中定义的 setter 更新属性,然后更新 Room 中的对象

我的问题是这被认为是最佳实践还是有更好的方法来实现这一目标?

我了解 MutableLiveData,但这需要我获取每个单独的对象属性,更新它们,然后转售每个属性,而我更愿意只获取对象,更新它并重新保存?

谢谢

最佳答案

只要从 LiveData 本身检索的对象(我们称之为对象 A)不用作 future 的引用对象,就肯定可以工作。

因此,如果您执行以下操作,这是一个很好的解决方案:

  1. Activity 操作
  2. ViewModel 调用加载对象 A
  3. 对象 A 放置在 LiveData 内
  4. 在 Activity 中观察到 LiveData
  5. 观察到的对象 A 被传递给函数 ViewModel
  6. ViewModel 中的函数更新对象 A 中的属性
  7. 更新后的对象 A 设置为 ViewModel 中的对象 B 引用
  8. 当需要Object时,在ViewModel中引用Object B

关于java - 更新 LiveData 返回的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49701201/

相关文章:

android - 在 Facebook 中发送消息时丢失消息或附件错误

Android - m3u8 视频流

android - 如何从 Android RoomDB 中的字符串列表中查询特定字符串

java - 未从具有 Room 的数据库中选择数据

android - (Android Repository Pattern) 使用从 web 删除的项目更新电话数据库数据

Java - 如何在没有对象引用的情况下使用方法

java - 在 Calendar 实例上设置 TimeZone ,并且在调用 getTime() 时,时间不会根据时区更新

java - Maven tomcat 插件不接受路径

java - 当我们总是可以在父类(super class)中使用泛型方法时,为什么要费心使用抽象方法和重写呢?

java - 如何使用 Java 中的 SIGAR 或 OSHI API 获取特定应用程序的操作系统进程详细信息?