我是靠谱客的博主 冷静眼神,最近开发中收集的这篇文章主要介绍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刷新数据

最后

以上就是冷静眼神为你收集整理的MVVM+RxJava的全部内容,希望文章能够帮你解决MVVM+RxJava所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部