使用mvvm

1、让android项目启用dataBinding

使用mvvm,必然会用到android为我们提供的dataBinding支持包

需要在我们正在编写的module中的build.gradle中添加(添加到android {} 内部)

    dataBinding {        enabled = true    }

构建一下,就可以使用

2、修改布局文件

使用databinding框架,需要布局文件 按照 「固定的写法」 来编写。

    

解释:

1.最外层用标签嵌套,注意layout的首字母是小写的“l”。标签的下面紧跟着一个标签,这个标签其实就是让我们进行数据绑定的一个标签。

2.标签中,包含着标签,这个标签就是我们将“变量”放置的位置
标签里面分别有  两个标签,分别来标识变量类型和变量名称。                                                          标签 标识变量类型,比如java.lang.String就是String类型,com.XXX.XXX.XXX.XXX这个就是一个自定义的User类型
标签 表示的就是我们定义的一个变量名称,这个变量名称我们会在下方的布局和对应的java代码中引用到 

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"?>                                        

标签就引用了User类,而标签则定义了一个名称为“vm”的User类变量,这个变量在下方的“android:text=”中做了引用。

布局的写法可以修改为        

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);    }}

 

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. NPM 和webpack 的基础使用
  3. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  4. [Android] AIDL的使用情况和实例介绍
  5. Android高手进阶教程(七)之----Android(安卓)中Preferences的使
  6. Android之进度条控件和常用资源分类总结
  7. (转)Android(安卓)AndroidManifest.xml文件的android:supportsRtl
  8. android 开发之旅
  9. 使用android studio 查看 android 的源代码

随机推荐

  1. 关于android 模拟器不能上网的解决办法!
  2. 如何高效的开发Android程序
  3. Android之UI学习篇四:EditText输入表情和
  4. 第一次android小组会
  5. 《Android安全机制解析与应用实践》迷你
  6. Android 广播监听应用APK卸载、覆盖、安
  7. Android 静默安装和智能安装的实现方法
  8. 分享我开发的网络电话Android手机APP正式
  9. Android操作系统安全(分层结构、应用沙盒
  10. Android原生Switch控件滑块thumb卡住问题