1.首先我们要修改xml文件,在最外层嵌套layout,然后在layout里面加入了数据配置data,varialble里面写入我们要配置的对象别名和包名的全路径。
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<!-- //这里相当于绑定了数据,下面就可以使用了,user是别名,方便下面引用user.name-->
<data><variable name="user" type="cq.cake.databinding.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.name}"/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.pass}"/>
</LinearLayout>
</layout>
2.然后我们在Activity里面写入和设置对象的数据,运行自然就会显示这些我们设置的数据了!
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
User user = new User("张三", "123456789");
//根据xml中的配置,这个binding自然就有setUser方法了
binding.setUser(user);
}
}
↑ a.这里把原来的setContentView(R.layout.activity_main)方法用DataBindingUtil.setContentView(this, R.layout.activity_main)代替了
b.ActivityMainBinding怎么来的?
根据后面布局xml文件名activity_main变为ActivityMain再加上Binding就生成了, 直接按照这个命名规范写就可以了,如果使用快捷键自动生成返回对象会返回ViewDataBinding , 它是不会自动包含setUser方法的
- 还有最重要的一点,就是需要在build.gradle中的android里面加入此属性
//使用它需要Android2.1(Api7+)且Gradle 1.5.0-alpha1及以上
dataBinding {
enabled = true
}
有了它再也不用再xml中写id,然后代码中findViewById,然后在通过这个控件去一个一个设置数据了!如果是服务器直接拿到这个对象,直接通过binder.setUser(user)就行了,是不是很方便,而且代码看起来非常的清爽!