【发布时间】:2021-12-11 02:02:16
【问题描述】:
我正在尝试观察页面的加载状态。但是,我在 ViewModel 上进行了 2 次 API 调用。我想显示一个进度条,直到两个项目都加载完毕。
我有一个密封类来指示数据的加载状态,如下所示:
sealed class DataState<out R> {
data class Success<out T>(val data: T) : DataState<T>()
data class Error(val exception: Exception) : DataState<Nothing>()
object Loading : DataState<Nothing>()
}
我的视图模型:
init {
getData1()
getData2()
}
val data1 = MutableLiveData<List<model1>>()
val data2 = MutableLiveData<List<model2>>()
private fun getData1() {
viewModelScope.launch {
data1.postValue(DataState.Loading)
val result = try {
repository.getData1().data!!
}
catch (e: Exception) {
data1.postValue(DataState.Error(e))
return@launch
}
data1.postValue(DataState.Success(result))
}
}
private fun getData2() {
viewModelScope.launch {
data1.postValue(DataState.Loading)
val result = try {
repository.getData2().data!!
}
catch (e: Exception) {
data2.postValue(DataState.Error(e))
return@launch
}
data2.postValue(DataState.Success(result))
}
}
我想观察一个实时数据,以便我可以看到这两个状态都是成功的。这可能吗?
【问题讨论】:
标签: android android-studio kotlin mvvm