初识 DataBinding
程序员文章站
2022-06-09 17:20:21
...
*1、环境配置
在module级的gradle里添加依赖
buildTypes {
......
dataBinding {
enabled = true
}
...
}
*2、准备工作:
**1、自定义简单的JavaBean文件待用
public class User {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
*3、xml中使用
<layout>
<data>
<variable
name="user"
type="binding.data.test.com.databingtest.User"/>//User的位置(包名+文件名)
</data>
< 正常的Layout布局>
</layout>
*4、在xml中关联JavaBean文件
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.name}"/>
<EditText
android:id="@+id/edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:text="@{user.age}"/>
</LinearLayout>
这样就xml中的设置可以了
*5、在MainActivity中绑定view以及设置数据:
//绑定View
ViewDataBinding bindingSS = DataBindingUtil.setContentView(MainActivity.this, R.layout.activity_main);
//设置数据
User user1 = new User();
user1.setAge("18");
user1.setName("测试");
bindingSS.setVariable(BR.user, user1);
在运行后即可在app上看到数据填充结果,不需要再finfViewById以及setText
*6、设置点击事件
**1、在MianActivity中定义一个内部类,给内部类一个方法待xml调用
public class Presenter {
public void onClick(User user) {
System.out.println("onClick: click" + user.getName());
}
}
**2、在xml中调用方法
<layout>
<data>
<variable
name="user"
type="binding.data.test.com.databingtest.User"/>
<variable
name="presenter"
type="binding.data.test.com.databingtest.MainActivity.Presenter"/>
</data>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{() -> presenter.onClick(user)}"
android:text="@{user.name}"/>
</LinearLayout>
</layout>
**3、设置EditText的监听:
<EditText
android:id="@+id/edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onTextChanged="@{() -> presenter.onTextChanged(edit.getText.toString)}"
android:background="@null"
android:text="@{user.age}"/>
这里可以通过id名称直接找到该控件并获取控件的值,在Presenter中添加响应的方法
public void onTextChanged(String user) {
System.out.println("onClick: click" + user);
}
暂时到这里。