热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

android架构设计,Android框架设计之MVVM

一、简介1、定义MVVM模式(Model--View--ViewModel模式)Model:模型层,负责处理数据的加载或存储。与MVP中的M一样。Vie

一、简介

1、定义

MVVM 模式(Model--View--ViewModel 模式)

Model:模型层,负责处理数据的加载或存储。与MVP中的M一样。

View:视图层,对应于Activity,XML,View,负责界面数据的展示,与用户进行交互。与MVP中的V一样。

ViewModel:视图模型,负责完成View于Model间的绑定和交互,Model或者View更改时,实时刷新对方,负责业务逻辑。

2、详情

和 MVP 模式相比,MVVM 模式用ViewModel 替换了 Presenter ,其他层基本上与 MVP 模式一致,ViewModel 可以理解成是 View 的数据模型和 Presenter 的合体。

MVVM 采用双向绑定(data-binding):View 的变动,自动反映在 ViewModel,反之亦然,

这种模式实际上是框架替应用开发者做了一些工作(相当于 ViewModel 类是由库帮我们生

成的),开发者只需要较少的代码就能实现比较复杂的交互。

3、各模块关系

}else{

listener.onFailed("${userName}登录失败")

}

}

//回调接口

interface ModelCallBack{

fun onSuccess(msg:String)

fun onFailed(msg:String)

}

}

View层

将根布局修改为layout,加入 Data Binding。

注意:class名为xml名去掉_后的驼峰写法,即此xml为activity_main.xml,则其类名则需要为ActivityMainBinding。两者名字必须是这个规则的写法,否则在View层进行xml绑定时会显示找不到xml文件

xmlns:app="http://schemas.android.com/apk/res-auto">

name="userViewModel"

type="yzl.swu.mvvm.viewModel.UserViewModel" />

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/textView"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@={userViewModel.userName}"

android:textSize="50sp"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintLeft_toLeftOf="parent"

app:layout_constraintRight_toRightOf="parent"

app:layout_constraintTop_toTopOf="parent"

app:layout_constraintVertical_bias="0.35" />

android:id="@+id/loginBtn"

android:layout_width="100dp"

android:layout_height="50dp"

android:layout_marginTop="30dp"

android:text="登录"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.5"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/textView"

android:onClick="@{userViewModel.loginUser}"/>

build一下生成需要的类

var cpro_id = "u6885494";

推荐阅读
author-avatar
qin2112
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有