栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Android】mvvm的学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Android】mvvm的学习

mvvm结构

mvvm简单介绍

mvvm简单介绍

首先也是和mvp一样的三层结构,model,view,viewModel的三层,其实就是把mvp的presenter层改成了viewModel层,其他的不变。不过具体为什么需要这样子改呢,可以先看完viewModel的代码之后再作对比。

代码同样用的之前的mvp结构学习博客,就是构建一个recyclerview显示内容。关于mvp结构的学习与demo

原先的presenter层代码:

override fun attach(view:TestContracts.View){
//开启子线程;
}
override fun onItemClick(position:Int){}

改成viewModel层之后:

private val testModel2=TestModel2()
private var _dataList=MutableLiveData>()
val dataList=_dataList

override fun attach(){
	testModel2.getHotList()
			.subscribeOn(Schedulers.io())
			.observeOn(AndroidSchedulers.mainThread())
			.subscribe(object : Observer?>{
				override fun onSubscribe(d : Disposable){}
				override fun onNext(t : List){
					_dataList.value=t.onEach{
						it.hotValueShowText=it.hotValue
					}
				}
				override fun onError(e : Throwable){}
				override fun onComplete(){}
			})
}

这里的viewModel是把具体内部写的也展示出来了,主要是想展示的是下面这两行的原因。

private var _dataList=MutableLiveData>()
val dataList=_dataList

因为mvvm不像mvp一样,presenter层拥有对view层的引用,而是view层单独持有对viewModel层的公有数据等等,所以这里也是把传入Recyclerview的数据数组先做了个私有属性,用于viewModel层内部能够改变,而这公有的datalist是会被view层所使用的,所以这样的方式即便view层对这个数组做了什么改变,也不会影响到viewModel层的变化。这样子也就是mvvm经常说的优点所在——耦合度更低。所以这种模式也是合作项目最受青睐的模式,三个层的独立不仅代码的读写方便,测试bug的时候断点也更加容易。当然函数内部的写法也就是简单地使用了一个Rxjava的线程切换,之后应该也会把自己对Rxjava的学习笔记记录下来。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777945.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号