2

我想根据其他两个 LiveData 值更改 LiveData 值,但我不知道该怎么做。

我知道我可以使用 LiveData.map() 但这仅在我想根据另一个 LiveData 值更改 LiveData 值时才有效。

我有一个包含这两个 LiveData 变量的 Repository 类:

val isLoadingDataFromDatabase = listForecasts.map { it.isEmpty() }
val isLoadingDataFromNetwork = MutableLiveData<Boolean>().apply { value = true }

然后,我有一个带有这个 LiveData 变量的 ViewModel:

val showLoadingIndicator = repository.isLoadingDataFromDatabase

我也可以使用:

val showLoadingIndicator = repository.isLoadingDataFromDatabase.map { it == true }

但是,只有当 isLoadingDataFromDatabase 和 isLoadingDataFromNetwork 都为真时,我才会将 showLoadingIndicator 值更改为真。

我不能使用 observe() 方法,因为它在 ViewModel 内部使用并且没有生命周期

4

0 回答 0