

1、启动DataBinding
在App下的build.gradle的android层级下,添加
dataBinding{
enabled = true
}2、修改布局文件为DataBinding布局

选中最外层的布局控件,同时按下Alt+回车,选择Convert to data binding layout

原来的Activity

可以修改为



在布局文件中的layout-data下声明变量

在相应位置使用,还可以在其中使用拼接,注:在大括号中还包含字符串的话 需要使用单引号
android:tex="@{account.name}"
对account进行初始化

拓展:
点击按钮为level+1
1、声明activity变量

2、按钮中添加点击事件,引用activity的onClick事件

3、Activity中设置activity
dataBinding.setActivity(this);
4、实现onClick方法

优化:
每次点击都会调用setLevel
在Bean中 extends BaseObservable
对getLevel()添加@Bindable注解
在setLevel()方法中添加刷新,BR类似R,是DataBinding为我们自动生成的


以上为单向绑定
双向绑定:

在视图中,@后增加=,表示双向绑定,即视图更新也会更新数据,数据更新也会刷新视图
双向绑定一般用于输入框
双向绑定☞视图发生变化,一般是EditView,在@后面加上 = 号即可。
对象Bean继承 android.databinding.BaseObservable
设置@Bindable 注解,等级发生变化的时候自动更新
设置 notifyPropertyChanged(BR.level),当值发生变化是通知视图更新。
DataBinding使用三步骤?
1启用 DataBinding
在app的buid.gradle 中 android{}下 添加如下代码
dataBinding{
enabled = true
}2. 将传统布局文件,修改为支持 DataBinding
选中最外层布局文件—按住【ALT+ENTER】—选择 Convert on data binding layout 这个步骤后将会生成ActivityDemoBing (ActivityDemoBinding生成规则就是布局文件变成大写再拼接一个Binding就是其类名)
3. 数据绑定 @{}
1.修改Activity
onCreate()中移除 setContentView()
而是 DataBingdingUtil.setContentView(Activity.this,R.layout.activity_demo)
然后将得到 ActivityDemoBinding binding实例。
现在可以直接通过binging.控件id,对控件进行操作了(告别了繁琐的findViewById)
2.来到布局文件中—可见到最外层为layout、layout下包含了<data/>节点以及传统布局文件;
在data节点中可声明对象 <data><variable name = "account" type="Account"/></data>
声明好后,在不居中可直接使用。如在TextView中 text= "@{account.name+'hello'+account.level}"
//ps.如果在大括号中若需要拼接字符串,这里使用单引号 ''
DataBinding是什么?
DataBinding是谷歌发布的一个实现数据绑定的框架(实现数据与视图双向绑定)
它可以帮助我们在安卓中更好地实现MVVM模式。
双向绑定☞视图发生变化,一般是EditView,在@后面加上 = 号即可。

等级对象继承 android.databinding.BaseObservable
设置@Bindable 注解,等级发生变化的时候自动更新
设置notifyPropertyChanged(BR.level),当值发生变化是通知视图更新。

DataBinding是谷歌发布的实现数据与视图双向绑定框架

DataBinding使用步骤

DataBinding是实现MVVM模型的一个工具

what is DataBinding ?

how to use DataBinding?

//布局绑定数据
model 继承
extends BaseObservable
@Bindable
get方法注解
set方法更新视图数据
notifyPropertyChanged(BR.level);
//声明对象
<varable
name="对象名"
type="类型"
/>
<varable
name="account"
type="model所在路径"
/>
//使用
android:text="@{account.属性}"
//布局改为dataBinding布局 选中最外层 alt+neter
<data>
</data>
DataBindingUtil.setContentView(this,R.layout...);
//开启dataBinding
dataBinging{
enable = true
}
DataBinding概念。
MVVM模式需要依靠DataBinding
DataBinding 是谷歌官方发布的一个实现数据与视图的双向绑定的框架,DataBinding可以帮助我们再安卓中更好的实现mvvm模式
DataBinding 使用步骤
1、启用DataBinding,让项目支持DataBinding, 在项目buuld.grale文件,android节点下配置
dataBinding {
enabled= true
}//启动DataBinding2、修改布局文件为DataBinding布局, 选中布局中根布局,如LinearLayout,快捷键Alt+Enter键选中binding layout转换成DataBinding布局, 同时系统会自动生成ActivityxxBinding (默认布局文件的大写), 例如
ActivityDemoBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_demo);
binding.tvInfo.setText("");
布局中
<data>
<variable
name="account"
type="study.com.myapplication.bean.Account">
</variable>
<variable
name="activity"
type="study.com.myapplication.databinding.DemoActivity">
</variable>
</data>
声明引用account
android:onClick="@{activity.onclick}"
android:text="@{account.name +'|' + account.level}"
布局的account对象是在Activity中传入
account = new Account();
account.setName("TEST");
account.setLevel(100);
binding.setAccount(account);
binding.setActivity(this);3、数据绑定, 没有需要重新rebuild project下
数据更新
int level = account.getLevel(); account.setLevel(level+1); binding.setAccount(account); 若不想每次setAccount更新 在模型类继承BaseObservable
@Bindable
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
notifyPropertyChanged(BR.level);
}默认更新数据,要想显示数据视图的双向绑定加=,例如
android:onClick="@={activity.onclick}"android:text="@={account.name +'|' + account.level}"一般用于EditText输入框。