理论:不多说了
MVVM( Model-View-ViewModel )

mvvm android 下的简单实践_第1张图片
图说mvc/mvp/mvvm的关系
MVC、MVP、MVVM的特点和关系
android中MVC/MVP的解耦方法学习笔记

环境准备
android {
dataBinding{
enabled true
}
}

实验过程
1设置实体类

package com.example.mvvmtest;public class User {    private String firstName;    private String lastName;    public User(String firstName, String lastName) {        this.firstName = firstName;        this.lastName = lastName;    }    public String getFirstName() {        return this.firstName;    }    public String getLastName() {        return this.lastName;    }    public void setLastName(String lastName) {        this.lastName = lastName;    }    public void setFirstName(String firstName) {        this.firstName = firstName;    }}

2.创建activity(这里需要注意注释的部分后添加,ActivityMainBinding需要编译一次才能生成)
这名称=Activity+X+Binding

package com.example.mvvmtest;import android.databinding.DataBindingUtil;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import com.example.mvvmtest.databinding.ActivityMainBinding;public class MainActivity extends AppCompatActivity {    //private ActivityMainBinding binding;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //binding = DataBindingUtil.setContentView(this,R.layout.activity_main);    }}

3.设置activy的xml(注意这里用到的User类,这之后再编译才能生成ActivityMainBinding )

<?xml version="1.0" encoding="utf-8"?>                                            

4.编译,添加如下代码(这时候ActivityMainBinding 才有效)

package com.example.mvvmtest;import android.databinding.DataBindingUtil;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import com.example.mvvmtest.databinding.ActivityMainBinding;public class MainActivity extends AppCompatActivity {    private ActivityMainBinding binding;    User user;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        binding = DataBindingUtil.setContentView(this,R.layout.activity_main);        user = new User("张","三");        binding.setUser(user);        init();    }    private void init(){        Button lishi = findViewById(R.id.btn_lishi);        lishi.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                user.setFirstName("李");                user.setLastName("四");                binding.setUser(user);            }        });    }}

5.运行效果
1.显示张三
mvvm实例运行效果
2.变更李四(点击李四)
mvvm实例运行效果
6.总结
1.Activity*Binding 经设置后模型和xml后才会编译生成
2.模型向视图写入的时机是,binding.setUser(user)。
3.该模式在这里的明显价值就是只更新模型就行了,模型向视图写入的过程有框架自动完成。
4.如果先更新视图呢,由视图到模型页是自动的吗?这个我还没有确定。
7.关系分析图
mvvm android 下的简单实践_第2张图片

更多相关文章

  1. Android Studio - 第四十七期 毛玻璃效果以及动态生成二维码以及
  2. Android仿QQ消息列表ListView滑动删除效果
  3. Android手势翻页效果
  4. Android中欢迎界面背景图片放大效果
  5. Android 效果
  6. 学到一个android小应用-霓虹灯闪烁效果界面
  7. Android屏幕切换效果实现
  8. Android 利用TwinklingRefreshLayout 实现下拉效果
  9. 用代码创建Android视图

随机推荐

  1. Android的Camera架构介绍
  2. Android中的shape中的属性大全
  3. Android焦点分发基本流程
  4. Android如何监听开机广播和关机广播
  5. gif in android
  6. Android学习路线总结,绝对干货
  7. ImageView之android:tint=" "属性方法作
  8. Android(安卓)SDCard Mount 流程分析(一)
  9. Android(安卓)应用程序快速启动的秘诀
  10. 【Android(安卓)开发】: Android(安卓)消