ResponseLiveData¶
ResponseLiveData 的数据状态¶
StateLiveData
目前支持五种状态:
- Success 可以表示数据获取成功
- Failed 可以表示数据获取失败
- Error 可以表示数据获取错误
- Empty 可以表示获取的是空数据
- Clear 可以表示清除状态
快速开始¶
创建 ResponseLiveData¶
private val _sentence = ResponseMutableLiveData<Sentences>()
val sentence: ResponseLiveData<Sentences>
get() = _sentence
观察 ResponseLiveData¶
观察对象值发生变化¶
对于 requestResponse
,你可以使用 observe
将其添加到观察者列表中。
mViewModel.sentence.observe(requireActivity()) {
mBinding.sentence.text = it.toString()
}
观察状态发生变化¶
对于 requestResponse
,调用 observeState
方法将状态添加到观察者列表中。
关于 onSuccess 方法的说明
对于 onSuccess
来说,你只能观察到值对应的状态而并非数据值。
mViewModel.sentence.observeState(requireActivity()) {
onSuccess = {
mLogger.d("请求成功")
}
onError = {
mLogger.d("遇到异常${it?.message}")
}
onFailed = { code, message ->
mLogger.d("请求失败,错误代码${code},错误信息${message}")
}
}
更新 ResponseLiveData¶
ResponseLiveData
只提供了 postValueAndSuccess
方法来更新对象值,其它情况下你只能更新 ResponseLiveData
对象的状态。
onFailed
提供了两个参数允许你传递错误代码和错误信息两个内容。postError
提供了一个参数允许你传递异常信息。
OpenApi().create(OpenApiService::class.java)
.sentences()
.request {
onSuccess = { _sentence.postValueAndSuccess(it) }
onError = { _sentence.postError(it) }
onFailed = { code, message -> _sentence.postFailed(code, message) }
}