官方才是最好的学习途径
使用入门
1.app的 build.gradle做如下引用
android {
...
dataBinding {
enabled = true
}
}
2.编写实体类,UserBean.java
public class UserBean {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public UserBean() {
}
public UserBean(String name, int age) {
this.name = name;
this.age = age;
}
}
3.修改布局文件activity_user_test.xml
此处推荐在布局文件根标签使用ALT+ENTER
键,自动生成基础的,data-binding
布局

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="user"
type="com.hwp.databindingdemo.bean.UserBean" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.UserTestActivity">
<TextView
android:text="@{user.name}"
android:layout_marginTop="60dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
tools:text="名字"
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:text="@{String.valueOf(user.age)}"
app:layout_constraintTop_toBottomOf="@+id/tv_name"
android:layout_marginTop="10dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
tools:text="16"
android:id="@+id/tv_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
此处需要注意的几个地方:
a、当引用为非String类型,一定要进行类型转换!
b、在项目的设计阶段显示默认值,则可以使用 tools 属性,tools大法好
c、variable标签中,name属性为自定义,type为对应实体类的包名+类名
此时在app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/包名下 会生成对应的databinding类,此处为ActivityUserTestBinding.java
,如果未生成请重编译,clean或者rebuild之类的操作!命名规则比如:activity_main-->ActivityMainBinding 、fragment-->FragmentBinding
4.修改UserTestActivity.java
,运行后得到下图界面
import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import android.os.Bundle;
import com.hwp.databindingdemo.R;
import com.hwp.databindingdemo.bean.UserBean;
import com.hwp.databindingdemo.databinding.ActivityUserTestBinding;
public class UserTestActivity extends AppCompatActivity {
UserBean userBean=new UserBean("测试",100);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_user_test);
ActivityUserTestBinding binding=DataBindingUtil.setContentView(this,R.layout.activity_user_test);
binding.setUser(userBean);
}
}

网友评论