Android DataBinding的官方双向绑定示例的官方双向绑定示例
本篇文章主要介绍了Android DataBinding的官方双向绑定示例,小编觉得挺不错的,现在分享给大家,也给大
家做个参考。一起跟随小编过来看看吧
在Android Studio 2.1 Preview 3之后,官方开始支持双向绑定了。
可惜目前Google并没有在Data Binding指南里面加入这个教程,并且在整个互联网之中只有这篇文章介绍了如何使用反向绑
定。
在阅读一下文章之前,我假设你已经知道如何正向绑定。
回顾一下回顾一下Data Binding
在正向绑定中,我们在Layout里面的绑定表达式是这样的:
<layout ...>
<data>
<variable type="com.example.myapp.User" name="user"/>
</data>
<RelativeLayout ...>
<TextView android:text="@{user.name}" .../>
</RelativeLayout>
</layout>
当user.name的数据改动时,我们的TextView都会同步改变文字。
双向绑定双向绑定
现在假设一种情况,当你更换成EditText时,如果你的用户名User.name已经绑定到EditText中,当用户输入文字的时候,你
原来的user.name数据并没有同步改动,因此我们需要修改成:
<layout ...>
<data>
<variable type="com.example.myapp.User" name="user"/>
</data>
<RelativeLayout ...>
<EditText android:text="@={user.name}" .../>
</RelativeLayout>
</layout>
看出微小的差别了吗?对,就是"@{}"改成了"@={}",是不是很简单?
隐式引用属性隐式引用属性
同样你也可以在别的View上引用属性:
<layout ...>
<data>
<import type="android.view.View"/>
</data>
<RelativeLayout ...>
<CheckBox android:id="@+id/seeAds" .../>
<ImageView android:visibility="@{seeAds.checked ? View.VISIBLE : View.GONE}" .../>
</RelativeLayout>
</layout>
当CheckBox的状态发生改变的时候,ImageView也会同时发生改变。在复杂情况下,这个特性没什么卵用,因为逻辑部分我
们是不建议写在XML中。
如何开启双向绑定如何开启双向绑定
开启双向绑定,需要在项目的build.gradle中设置:
classpath 'com.android.tools.build:gradle:2.1.0-alpha3'
同样,你需要在你Module的build.gradle中设置:
android {
...
dataBinding.enabled = true
}
貌似还有点问题貌似还有点问题
评论0