前言
本篇是MVVM架构的姊妹篇,由于篇幅原因,所以将这个工具最简单的使用抽出来说一下。
实践
库配置
android{
...
dataBinding {
enabled true
}
...
}
xml布局
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="user"
type="com.old.mvvm.UserBean" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--android:onClick="@{handlers::onClickFriend}"-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.name}" />
</LinearLayout>
</layout>
数据绑定
public class Level1Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_level_one_);
UserBean user = new UserBean(66,"小明");
ActivityLevelOneBinding ac = DataBindingUtil.setContentView(this, R.layout.activity_level_one_);
ac.setUser(user);
}
}
sync之后生成的类地址:
project path…\app\build\generated\source\apt\debug\com\old\mvvm\databinding\xxxxBindg.java
注意坑!
dataBinding就那么几行代码,是个人看看都会用,但是我在用的时候遇了个一个坑,sync,make,rebuild之后类是生成了,但是IDE死活没有编译出对应的.class导致无法使用这个类。
后来我在Stack Overflow找到一个老哥和我一样情况,就是在布局名称后面加了个杠就行了。
https://stackoverflow.com/questions/50713070/unknown-databinding-class/50713352
Demo
https://github.com/zj614android/dataBindingDemo