我有一个ViewModel类,如下:
class MainViewModel(
private val schedulerProvider: BaseSchedulerProvider
) : BaseViewModel() {
private val _posts = MutableLiveData<List<Post>>()
val posts: LiveData<List<Post>>
get() = _posts
private val _isDataLoadingError = MutableLiveData<Boolean>()
val isDataLoadingError: LiveData<Boolean>
get() = _isDataLoadingError
private val _isLoading = MutableLiveData<Boolean>()
val isLoading: LiveData<Boolean>
get() = _isLoading
init {
showPhotos()
}
fun showPhotos() {
EspressoIdlingResource.increment() // App is busy until further notice
_isLoading.postValue(true)
compositeDisposable.add(Network.items.getPhotos()
.subscribeOn(schedulerProvider.io())
.observeOn(schedulerProvider.ui())
.doFinally {
if (!EspressoIdlingResource.countingIdlingResource.isIdleNow) {
EspressoIdlingResource.decrement() // Set app as idle.
}
_isLoading.postValue(false)
}
.subscribe({
_isDataLoadingError.postValue(false)
showPosts(it)
}) {
_isDataLoadingError.postValue(true)
Timber.e(it)
})
}
private fun showPosts(networkPhotos: List<NetworkPhoto>) {
EspressoIdlingResource.increment() // App is busy until further notice
_isLoading.postValue(true)
compositeDisposable.add(Network.items.getPosts()
.subscribeOn(schedulerProvider.io())
.observeOn(schedulerProvider.ui())
.doFinally {
if (!EspressoIdlingResource.countingIdlingResource.isIdleNow) {
EspressoIdlingResource.decrement() // Set app as idle.
}
_isLoading.postValue(false)
}
.subscribe({ networkPosts ->
_isDataLoadingError.postValue(false)
_posts.postValue(
PostAndImages(networkPosts, networkPhotos).asDomaineModel()
)
}) {
_isDataLoadingError.postValue(true)
Timber.e(it)
})
}
}
为_isDataLoadingError
和_isLoading
创建包装器类更好吗?如果是,您能告诉我如何?
我创建了一个枚举,如下所示: