mvvm android 下的简单实践
16lz
2021-01-23
一 理论:不多说了
MVVM( Model-View-ViewModel )
图说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.显示张三
2.变更李四(点击李四)
6.总结
1.Activity*Binding 经设置后模型和xml后才会编译生成
2.模型向视图写入的时机是,binding.setUser(user)。
3.该模式在这里的明显价值就是只更新模型就行了,模型向视图写入的过程有框架自动完成。
4.如果先更新视图呢,由视图到模型页是自动的吗?这个我还没有确定。
7.关系分析图
更多相关文章
- Android Studio - 第四十七期 毛玻璃效果以及动态生成二维码以及
- Android仿QQ消息列表ListView滑动删除效果
- Android手势翻页效果
- Android中欢迎界面背景图片放大效果
- Android 效果
- 学到一个android小应用-霓虹灯闪烁效果界面
- Android屏幕切换效果实现
- Android 利用TwinklingRefreshLayout 实现下拉效果
- 用代码创建Android视图