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()
}
在我的应用程序中,我使用了这个 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()
}