MVVM架构简单介绍
在这里我们要使用其支持库Data Binding来实现mvvm架构
model-view-viewmodel 三个部分
1.配置model(app) 的build.gradle
2.先创建三个部分之一model,存放数据
public class Swordsman {private String name;private String level;public String getLevel() {return level;}public Swordsman(String level, String name) {this.level = level;this.name = name;}public void setLevel(String level) {this.level = level;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
3.再创建三个部分之一view,布局文件
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"><data><import type="com.example.liuyan.testmvvm.test.Swordsman" alias="otherswordsman"/> <!--如果多个包名相同,可以用别名--><import type="com.example.liuyan.testmvvm.Swordsman"/><import type="java.util.ArrayList"/> <!--java.util中的引用数据变量定义,要import--><import type="java.util.Map"/><variablename="otherswordsman1"type="otherswordsman"/> <!--变量实体类的位置--> <!--别名--> <!--binding.setotherswordsman1(otherswordsman);--><variablename="swordsman"type="Swordsman"/><variablename="name"type="String"/> <!--binding.setname(String)--> <!--java.lang的基本类型数据变量定义,不需要import--><variablename="age"type="int"/><variablename="man"type="boolean"/><variablename="list"type="ArrayList<String>"/> <!--定义集合变量,需要import--> <!--会爆红,但不用管--><variablename="map"type="Map<String,String>"/><variablename="arrays"type="String[]"/></data><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{swordsman.name}"/> <!--和实体类的属性值绑定--><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{swordsman.level}"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{name}"/> <!--变量定义赋值--><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{String.valueOf(age)}"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{String.valueOf(man)}"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{list.get(1)}"/> <!--变量定义赋值--><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text='@{map["age"]}'/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{arrays[1]}"/></LinearLayout>
</layout>
4.在activity中得到三个部分之一view_model
根据activity_main.xml 生成ActivityMainBinding(如布局为my_buju,则view_model为 MyBujuBinding)
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.activity_main);//binding就是viewmodel (mvvm=model-view-viewmodel)ActivityMainBinding binding = DataBindingUtil.setContentView(this , R.layout.activity_main);Swordsman swordsman = new Swordsman("张无忌" , "sss");binding.setSwordsman(swordsman); //给布局中的控件传值binding.setName("风清扬");binding.setAge(30);binding.setMan(true);ArrayList list = new ArrayList();list.add("0");list.add("1");binding.setList(list);Map map = new HashMap();map.put("age" , "30");binding.setMap(map);String[] arrays = {"张无忌" , "慕容龙城"};binding.setArrays(arrays);}
}
5.此外还有数据的动态更新(model变化,view要跟着变化),要设置model的set和get方法
6.还有数据库的双向绑定(view变化,model变化),要设置view中的控件传值方式
在edittext中
android:text="@={swordsman.level}"
这样edittext中变化,对应的model数据也变化
MVVM架构简单介绍相关推荐
- 自己动手写处理器之第一阶段(3)——MIPS32指令集架构简单介绍
将陆续上传本人写的新书<自己动手写处理器>(尚未出版).今天是第四篇.我尽量每周四篇 1.4 MIPS32指令集架构简单介绍 本书设计的处理器遵循MIPS32 Release 1架构,所以 ...
- 公司网络架构简单介绍
公司网络架构简单介绍 公司服务器架构简单介绍: CDN:租用的,用于提高用户访问速度 前边两台LVS:实现负载均衡和高可用 三台Nginx服务器提供Web服务 三台Tomcat服务器当动态Web服务 ...
- 3种应用架构简单介绍
1.单一架构:将所有的应用(业务)放到一台服务器上运行,如公司管理系统/超市收银系统. 2.垂直应用架构 将大应用拆分成为多个小应用(一般按照业务拆分),根据不同的访问频 率决定各自业务部署的服务器数 ...
- Web服务器架构简单介绍
服务器开发的流程图 服务器架构的设计思路 服务器设计思路
- Hive代码组织及架构简单介绍
2019独角兽企业重金招聘Python工程师标准>>> hive三个主要组件 Serialzers/Deserialzers(trunk/serde) 此组件允许用户自己开发 ...
- WPF自学入门(十一)WPF MVVM模式Command命令 WPF自学入门(十)WPF MVVM简单介绍...
WPF自学入门(十一)WPF MVVM模式Command命令 在WPF自学入门(十)WPF MVVM简单介绍中的示例似乎运行起来没有什么问题,也可以进行更新.但是这并不是我们使用MVVM的正确方式.正 ...
- WPF MVVM 架构 Step By Step(2)(简单的三层架构示例及粘合代码GLUE code)
WPF MVVM 架构 Step By Step(2)(简单的三层架构示例及粘合代码GLUE code) 原文:WPF MVVM 架构 Step By Step(2)(简单的三层架构示例及粘合代码GL ...
- Apollo架构体系、Apollo运行原理、Apollo配置中心简单介绍(一)
笔者在工作中遇到如下问题,随着程序功能越多,配置文件不断增加,一些功能的开关.服务器地址.接口地址.不同环境的一些配置文件不同,这些在每次发布不同环境.更新项目时都比较繁琐,后来学习微服务时接触到了S ...
- android数据流分类,【Android工程之类】1 MVVM架构 - MVVM与单向数据流
前言 这个系列将讲述使用MVVM架构.LiveData.Room.Kodein.Retrofit.EventBus来建立一个统一的.优雅的.可维护的TODO程序,本系列分为多个章节,从0开始一步一步引 ...
最新文章
- DefaultHashOperations multiget的一个坑
- linux命令:case选择结构语句
- linux块设备驱动(一)——块设备概念介绍
- layer 弹出层 回调函数调用 弹出层页面 函数
- 42.从非托管磁盘创建虚拟机
- 深入剖析Android音频(四)AudioTrack
- Spark机器学习(12):神经网络算法
- Hello designer|PPT笔记
- python题目-奇偶数调用函数
- Oracle函数之listagg函数
- Drools——什么是规则
- TopCoder SRM(Arena) 一日游记
- 用计算机算出身高,身高预测公式计算器靠谱吗
- 京东后台->京东商智uuid算法
- openwrt 挂载硬盘NFS共享,非SMB共享
- zabbix报错排错大全
- 绘图与滤镜全面解析--Quartz 2D 、Core Image
- 你可以把Linux内核当成一家软件外包公司的老板
- 《尚硅谷30天入门Java》学习笔记1
- Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed.