概述
MVVM+RxJava
-
HttpRepository–model(网络层,负责处理数据,解析数据),用的Retrofit进行网络请求,Observable.just()
-
activity/fragment–view(负责展示数据)
-
viewmodel–vm(负责衔接view和model,获取数据,发送给activity-view,也要处理判断数据),一般来说 是一个activity对应一个ViewModel,特殊情况除外;
LiveData驱动数据变化,用于view层的获取数据 -
HttpApiService–纯接口,字段,传输方式,地址,响应参数完全与后端对应
-
HttpRepository–调用HttpApiService的方法,在这一层给造假数据测试
-
ViewModel–调用HttpRepository的方法,并将数据通过post()发送到activity
-
activity–发起请求,调用ViewModel的方法,收到viewmodel的数据并在页面展示
使用方法
//1、创建一个ViewModel
public class ActivityViewModel(application: Application) extends ViewModel/AndroidViewModel(application){
}
//2、使用懒加载,在ViewModel创建Repository对象,并通过httpRepository.xxx()调用HttpRepository的方法,从而进行网络请求,得到数据,解析数据,抛出数据
val httpRepository: HttpRepository by lazy {
HttpRepository(application)
}
//3、在ViewModel里面创建一个LiveData,用于将数据传递给view并监听他的数据变化,LiveData是一个抽象类,他的实现类有MutableLiveData和MediatorLiveData,我们常用到的是MutableLiveData,并且常常将他和ViewModel一起使用
val : MutableLiveData<T> by lazy {
MutableLiveData<T>()
}
//4、请求网络,返回数据,数据通过liveData的postValue()发送到view显示
httpRepository.requestgetCarInfo(vincode, getUserToken()).subscribe {
getCarInfo.postValue(it.data)
}
//5、activity请求网络接口,监听到数据的变化并显示
ViewModel.requestGetEmergencyContact()
ViewModel.getCarInfo.observe(this, Observer { data ->
data?.apply {
itv_carinfo_carnickname.valueString = data.petName
}
})
MVVM的优点:让结构更清晰,每一层做每一层的事情,减少view层的代码量
- liveData的优点:数据一变化就能监听到且发送到view刷新数据
最后
以上就是冷静眼神为你收集整理的MVVM+RxJava的全部内容,希望文章能够帮你解决MVVM+RxJava所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复