0
点赞
收藏
分享

微信扫一扫

ViewModel LiveData 使用初体验


背景 Fragment 希望不用那么多代码在Fragment中。所以推出了ViewModel加载数据的方式。更加高度的解耦

生命周期

ViewModel LiveData 使用初体验_ide

使用

package com.anguomob.love.activity.ui.my

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.anguomob.love.bean.UserInfo
import com.anguomob.love.common.PassportManager
import com.anguomob.love.net.usecase.PassportUseCase
import io.reactivex.disposables.CompositeDisposable

class MyViewModel : ViewModel() {
override fun onCleared() {
super.onCleared()
}
private val _text = MutableLiveData<UserInfo>()
private val _error = MutableLiveData<Throwable>()
var dataList: LiveData<UserInfo> = _text
var error: LiveData<Throwable> = _error
val mDisposable: CompositeDisposable = CompositeDisposable()
init {
val subscribe =
PassportUseCase().refreshUserInfo(PassportManager.getInstance().getUid()).subscribe({
it?.let {
_text.value=it;

}

}, {
_error.value=it

})
mDisposable.add(subscribe)
}


}

创建 ViewModel 类 并直接加载数据

在Fragment中需要的地方

ViewModel LiveData 使用初体验_android_02

 

initData里面把代码用上

private lateinit var dashboardViewModel: MyViewModel

dashboardViewModel =
ViewModelProvider(this).get(MyViewModel::class.java)
dashboardViewModel.dataList.observe(viewLifecycleOwner, Observer {
it?.let {
PassportManager.getInstance().saveUserInfo(it)
Glide.with(this)
.load(it.avatar)
.placeholder(getDefaultPlace(it.sex))
.transition(DrawableTransitionOptions.withCrossFade())
.into(mIvFDUpload)


mTvFdNickName.text = it.nick_name;

}
})

dashboardViewModel.error.observe(viewLifecycleOwner, Observer {
it?.let {
TipsToast.showTips(activity, ApiErrorCodeDesc.getErrorMsg(it))
}
})

 

举报

相关推荐

0 条评论