MVVM 这种开发模式的作用就是更好的实现UI和数据分离
Android 实际开发中的问题是 不同的业务逻辑需要View在不同的要求下显示不同数据
具体的使用步骤是
1.先保证自己的Android studio 为最新版本
然后在build 文件里加下面的代码
android {
dataBinding{
enabled=true
}
}
然后重新编辑项目
2.新建一个layout 布局
大概长这样
3.新建一个Activity
public classMVVMActivityextendsAppCompatActivity {
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//这个MvvmActivityBinding 是系统自动构建的 就是自己activity 名字打出来就可以有代码提示
MvvmActivityBinding binding= DataBindingUtil.setContentView(this,R.layout.mvvm_activity);
User user=newUser("success","222");
binding.setUser(user);
}
}
具体的使用我现在也是实验阶段目前没有放在项目中
感觉很不错
实践问题
1.实用表达式语法
依据不同的后台判断改变显示值,以及是否显示
android:text="@{test.open ? @string/text_open_custody:@string/text_notopen_custody}
设置动态显示的过程中出现下列的报错
原因是我的语法为
android:visibility="@{test.isOpen ? View.INVISIBLE : View.VISIBLE}"
但是这样写是需要导入相关联包的,需要在最上层节点加入
同理 使用颜色设置语法
android:textColor="@{large ? Color.RED : Color.YELLOW}"/>
导入的就是
<import type=android.graphics.color/>
2.自定义view的问题
实践中出现了一个问题比如我们需要在acrivity 中产生一个dialog 那这样的话是不能使用databing来进行数据绑定的
很遗憾没有找到合适的方法去处理这个问题
参考资料 data binging 官方地址
https://developer.android.com/topic/libraries/data-binding/index.html 自己翻墙翻译比较好
价值很好的实战经验文章
http://www.jianshu.com/p/96f8d3286a67