【问题标题】:Android MVVM, can you observe LiveData inside an ViewModel with another LiveData object?Android MVVM,你能用另一个 LiveData 对象观察 ViewModel 中的 LiveData 吗?
【发布时间】:2019-05-02 08:53:53
【问题描述】:

在我的应用程序中,我使用这个 ViewModel:

class MainViewModel : ViewModel(){
    val hasMessages = MutableLiveData<Boolean>()
    val messages = MutableLiveData<List<Message>>()

}

我已经连接了代码,因此如果用户确实有消息,列表将被填充并更新布尔值,这似乎是多余的

它们是两个不同的变量,因为当 hasMessages 设置为 true 时,用户可以在他们的工具栏上看到一个按钮,当他们按下它时,他们会转到显示消息的片段以便他们可以看到它们

有没有办法设置 hasMessages 使其成为从消息列表派生的 LiveData?

像 RxJava 的 AsyncSubject 这样的东西在这种情况下可以工作,但我不知道如何使它工作

【问题讨论】:

    标签: android subject


    【解决方案1】:

    你可以使用 Transformations.map()

          val messages = MutableLiveData<List<Message>>()
    
          val hasMessages: LiveData<Boolean> = Transformations.map(messages) {
             it.isNotEmpty()
          }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 2022-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多