Jetpack业务架构(LiveData、DataBinding)
如何将数据传递到布局文件中呢?首先,在布局文件中定义布局变量,指定对象的名字和类型,当然数据的操作在标签里。LiveData是Jetpack提供的一种响应式编程组件,它可以包含任何类型的数据,并在数据发生变化的时候通知给观察者,适合与ViewModel结合在一起使用,就可以让ViewModel将数据的变化主动通知给Activity。DataBinding为了方便使用,对布局变量提供了Setter类
LiveData是Jetpack提供的一种响应式编程组件,它可以包含任何类型的数据,并在数据发生变化的时候通知给观察者,适合与ViewModel结合在一起使用,就可以让ViewModel将数据的变化主动通知给Activity。
DataBinding 是 Google 在 Jetpack 中推出的一款数据绑定的支持库,他的目的是一个帮助我们实现数据和UI绑定,并可以进行双向绑定。
优势
- 项目更加简介,代码可读性更高。
- 不再需要
findViewById()。 - 布局文件可以包含简单的业务逻辑。
数据绑定
如何将数据传递到布局文件中呢?首先,在布局文件中定义布局变量,指定对象的名字和类型,当然数据的操作在标签里。data标签里用于放在布局文件中各个UI控件所需要的数据,这些数据类型可以是自定义类型,也可以是基本类型。<data>
<variable
name="book"
type="com.yhj.jetpackstudy.Book" />
<variable
name="number"
type="Integer" />
</data>
public class Book {
private int id;
private String title;
private String author;
}
布局中的数据绑定使用“@{}”语法写入属性中,通过布局表达式的形式设置TextView的text。<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{book.title}" />
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{Constants.APP_ID}" />
DataBinding为了方便使用,对布局变量提供了Setter类,因此,在Activity中,通过setBook(),将Book对象传递给布局变量。Book book = new Book(0, "android", "yhj");
//BR类似于Android中的R类,由DataBinding自动生成,用于存放所有布局变量的id。
//DataBinding为了方便使用提供了Setter类,直接使用setXxx()
//binding.setVariable(BR.book,book);
binding.setBook(book);
绑定后,就不需要再Activity中设置内容了,实现了布局与页面的解耦。 DataBinding具有Null校验,如果绑定值为null,则分配默认值null,如果类型为int,默认值为0。
更多推荐



所有评论(0)