Android数据绑定Data Binding初体验
2015-12-23 23:01
429 查看
Android数据绑定Data Binding初体验
配置
新版的Android Studio 已内置数据绑定框架,只需在app的build.gradle中添加android { .... dataBinding { enabled = true } }
布局文件的改变
比起原来的布局文件,增加了layout为root节点,data节点进行数据的声明<layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> </data> <!--原先的根节点(Root Element)--> <LinearLayout> .... </LinearLayout> </layout>
Data节点
在data节点中声明数据变量name为声明的名称
type为该类的包名+类名
<variable name="user" type="com.ethanco.mydatabinding.User" />
简单的例子 ##
新建User类
public class User { private final String firstName; private final String lastName; public User(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } }
编写布局
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="user" type="com.ethanco.mydatabinding.User" /></data>
<!--原先的根节点(Root Element)-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName}" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.lastName}" />
</LinearLayout>
</layout>
绑定数据
当编写好variable,就会自动生成一个继承ViewDataBinding的类,例如activity_main.xml就会生成ActivityMainBindingActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); User user = new User("Test", "User"); binding.setUser(user);
运行程序
即发现TextView的text以显示为Test和User绑定事件
View.OnClickListener有个方法onClick(), 你就可以使用android:onClick属性来绑定一个方法注意:绑定的方法的签名必须和该属性原本对应的方法的签名完全一样,否则编译阶段会报错。
新建MyHandlers类
public class MyHandlers { public void onClick(View view) { Log.i("zhk-MyHandlers", "onClick: "); Toast.makeText(view.getContext(), "onClick", Toast.LENGTH_SHORT).show(); } }
声明
<variable name="handlers" type="com.ethanco.mydatabinding.MyHandlers" />
设置绑定
<Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="@{handlers.onClick}" android:text="ClickMe" />
设置Handlers
在Activity中ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); ..... binding.setHandlers(new MyHandlers());
运行程序
点击Button发现以绑定了MyHandlers的onClick方法其他
现在Data Binding只支持单向绑定,期待双向绑定,届时,各种注解就正的可以下岗了!参考
https://github.com/LyndonChin/MasteringAndroidDataBinding
https://github.com/derron/DataBinding-album-sample/blob/master/MVVM.md
程序源码
相关文章推荐
- Android系统启动原理
- Android Notification的多种用法
- Android动画--属性动画
- Failed to find 'ANDROID_HOME' environment variable
- Attribute is missing the Android namespace prefix
- 回调机制在 Android 监听用户界面操作中的体现
- MVP模式在Android项目中的使用
- android存储数据
- Android-Data Backup
- 一个Android登陆/注册XML布局文件代码
- Android开发入门前准备
- Android简单计时器的实现
- Android Bitmap 常见的几个操作:缩放,裁剪,旋转,偏移
- Android TouchEvent分发
- Android Studio你不知道的调试技巧
- Android开发艺术-第七章Android动画深入分析读书笔记
- Android 系统稳定性 - ANR(二)
- Android 系统稳定性 - ANR(一)
- 生产实习(Android)五
- 在Android Studio 中正确使用adil ”绝对经典“