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 }//启动DataBinding
2、修改布局文件为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输入框。