android data binding
16lz
2021-01-25
使用 android 的数据绑定库,可以编写声明式布局,减少应用程序逻辑和布局之间的粘合代码。数据绑定库可以兼容到android 2.2。
数据绑定库要求使用 gradle 1.5 或者gradle更高的版本。数据绑定库目前还处于 beta 版本阶段,这意味着以后发布正式版的时候,使用方法可能发生比较大的修改。可惜目前只支持单向数据绑定(所以不想看了。。。,等支持双向了再说吧),只支持单向,写起来比用 ButterKnife + ButterKnifeZelezny 要麻烦。
使用步骤:
1. 开启数据绑定配置
2. 在 layout 文件中绑定数据
3. 在 java 代码中获取到绑定的数据对象,设置对象的数据
- 开启数据绑定配置,在使用数据绑定的 app module 的 build.gradle 中添加下面代码片段
android { .... dataBinding { enabled = true }}
- 在 layout 文件中绑定数据,为了在 layout 文件中使用数据绑定,增加了新的标签 layout 和 data,根标签必须使用 layout。下面包含 data 元素和 view 的根元素。view元素就是未使用数据绑定前的 layout 文件。
<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="user" type="com.example.User"/> </data> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <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 name=”user” type=”com.example.User”/> 声明一个变量 com.example.User 类型的变量 user。
使用@{user.lastName} 使用变量 user 的属性值。
User 类中的字段通常不会改变。比如下面两种情况
public class User { public final String firstName; public final String lastName; public User(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; }}
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 this.firstName; } public String getLastName() { return this.lastName; }}
- 获取绑定的数据对象,设置对象的数据,在 activity 中使用下面的代码设置绑定的数据
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity); User user = new User("Test", "User"); binding.setUser(user);}
参考:
https://developer.android.com/tools/data-binding/guide.html
https://github.com/LyndonChin/MasteringAndroidDataBinding
更多相关文章
- “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
- Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
- 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
- Intent 对象在 Android(安卓)开发中的应用
- Android中MediaMuxer和MediaCodec用例 - audio+video
- Android前台画面和后台service之间通信的方法之Broadcast(转)
- 编写高效的Android代码(提高运行速度,节省电量)
- 【Android】内嵌数据库IDE(可视化操作类)
- Android(安卓)Architecture Component Room持久化数据库(五)迁移Ro