Android中使用mvvm
使用mvvm
1、让android项目启用dataBinding
使用mvvm,必然会用到android为我们提供的dataBinding支持包
需要在我们正在编写的module中的build.gradle中添加(添加到android {} 内部)
dataBinding { enabled = true }
构建一下,就可以使用
2、修改布局文件
使用databinding框架,需要布局文件 按照 「固定的写法」 来编写。
解释:
1.最外层用
2.标签中,包含着
type指向一个自定义数据类型package com.iauto.systemview.viewmodel.screens.ons.auto;public class User { public String name; public String phoneNumber; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String PhoneNumber) { this.phoneNumber = PhoneNumber; } public User(String name, String phoneNumber) { this.name = name; this.phoneNumber = phoneNumber; }}
<?xml version="1.0" encoding="utf-8"?>
布局的写法可以修改为
3、修改activity文件
正常情况下Activity文件的写法:
package com.iauto.onstestapplication;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }}
使用MVVM需要做出的修改:
package com.iauto.onstestapplication;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); DataBindingUtil.setContentView(this, R.layout.activity_main); }}
这样,就可以实现双向绑定。下一步操作就是给DataBindingUtil.setContentView一个返回值,返回值的类型存在特殊规则:
返回值是和布局文件是息息相关,返回值的类型也是变化的,返回的类型会按照布局文件的顺序生成类。
比如:
activity_main.xml布局文件经过DataBindingUtil生成的类是ActivityMainBinding类。
规则:将布局文件的首字母大写,并且去掉下划线,将下划线后面的字母大写,加上Binding组成。
需要自定义类名的话可以
改完布局之后,记得rebuild一下,不然不会自动生成的。
4、在java代码中直接设置数据,改变布局中的显示
package com.iauto.onstestapplication;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityMainBinding activitymainbinding = DataBindingUtil.setContentView(this, R.layout.activity_main); User zhangsan = new User("zhangsan","1888888888"); activitymainbinding.setUser(zhangsan); }}
更多相关文章
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- NPM 和webpack 的基础使用
- 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
- [Android] AIDL的使用情况和实例介绍
- Android高手进阶教程(七)之----Android(安卓)中Preferences的使
- Android之进度条控件和常用资源分类总结
- (转)Android(安卓)AndroidManifest.xml文件的android:supportsRtl
- android 开发之旅
- 使用android studio 查看 android 的源代码