Android LiveData的包装类

Android LiveData的包装类,android,android-livedata,android-viewmodel,Android,Android Livedata,Android Viewmodel,我有一个ViewModel类,如下所示: class MainViewModel( private val schedulerProvider: BaseSchedulerProvider ) : BaseViewModel() { private val _posts = MutableLiveData<List<Post>>() val posts: LiveData<List<Post>> get()

我有一个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)
            })
    }
}
class主视图模型(
专用val schedulerProvider:BaseSchedulerProvider
):BaseViewModel(){
private val_posts=MutableLiveData()
val posts:LiveData
获取()
private val_isDataLoadingError=MutableLiveData()
val isDataLoadingError:LiveData
get()=\u isDataLoadingError
private val_isLoading=MutableLiveData()
val isLoading:LiveData
get()=\u正在加载
初始化{
showPhotos()
}
趣味照片{
EspressoidingResource.increment()//在另行通知之前,应用程序正忙
_isLoading.postValue(true)
compositeDisposable.add(Network.items.getPhotos())
.subscribeOn(schedulerProvider.io())
.observeOn(schedulerProvider.ui())
多恩先生终于来了{
如果(!EspressaidlingResource.countingIdlingResource.isIdleNow){
EspressoidingResource.decrement()//将应用程序设置为空闲。
}
_isLoading.postValue(false)
}
.订阅({
_isDataLoadingError.postValue(false)
展台(it)
}) {
_isDataLoadingError.postValue(true)
木材(it)
})
}
私人娱乐展示帖子(网络照片:列表){
EspressoidingResource.increment()//在另行通知之前,应用程序正忙
_isLoading.postValue(true)
compositeDisposable.add(Network.items.getPosts())
.subscribeOn(schedulerProvider.io())
.observeOn(schedulerProvider.ui())
多恩先生终于来了{
如果(!EspressaidlingResource.countingIdlingResource.isIdleNow){
EspressoidingResource.decrement()//将应用程序设置为空闲。
}
_isLoading.postValue(false)
}
.订阅({networkPosts->
_isDataLoadingError.postValue(false)
_posts.postValue(
PostAndImages(网络帖子、网络照片).asDomaineModel()
)
}) {
_isDataLoadingError.postValue(true)
木材(it)
})
}
}
\u isDataLoadingError
\u isLoading
创建包装类是否更好?如果是,你能告诉我怎么做吗

Chekout这个例子Chekout这个例子