MVVM+RxJava

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刷新数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值