Android LiveData的包装类
我有一个ViewModel类,如下所示: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()
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这个例子