Android MVVM,你能用另一个 LiveData 对象观察 ViewModel 内的 LiveData 吗?

Android MVVM, can you observe LiveData inside an ViewModel with another LiveData object?

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

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

}

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

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

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

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

您可以使用 Transformations.map()

      val messages = MutableLiveData<List<Message>>()

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