LiveData是Jetpack提供的一种响应式编程组件,它可以包含任何类型的数据,并在数据发生变化的时候通知给观察者,适合与ViewModel结合在一起使用,就可以让ViewModel将数据的变化主动通知给Activity。

        DataBinding 是 Google 在 Jetpack 中推出的一款数据绑定的支持库,他的目的是一个帮助我们实现数据和UI绑定,并可以进行双向绑定。

优势
  1. 项目更加简介,代码可读性更高。
  2. 不再需要findViewById()
  3. 布局文件可以包含简单的业务逻辑。


           

    数据绑定
            如何将数据传递到布局文件中呢?首先,在布局文件中定义布局变量,指定对象的名字和类型,当然数据的操作在标签里。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。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐