美文网首页
【Android Architecture】Data Bindi

【Android Architecture】Data Bindi

作者: Charein | 来源:发表于2019-12-03 09:43 被阅读0次

Data Binding库是一个support库,使用该库,您可以使用声明性格式而非编程方式将布局中的UI组件绑定到应用程序中的数据源。

布局通常在activities中使用调用UI框架方法的代码进行定义。 例如,下面的代码调用findViewById()来查找TextView小部件并将其绑定到viewModel变量的userName属性:

TextView textView = findViewById(R.id.sample_text);
textView.setText(viewModel.getUserName());

以下示例显示如何使用Data Binding库直接在布局文件中将文本分配给widget。 这样就无需调用上面显示的任何Java代码。 注意在赋值表达式中使用@ {}语法:

<TextView
    android:text="@{viewmodel.userName}" />

通过在布局文件中绑定组件,您可以删除activities中的许多UI框架调用,从而使它们更易于维护。 这也可以提高应用程序的性能,并有助于防止内存泄漏和空指针异常。

注意:在许多情况下,view binding可以提供与data binding相同的好处,实现起来更简单,性能更好。 如果您主要使用data binding来替换findViewById()调用,请考虑改为使用view binding

使用Data binding


使用以下页面来学习如何在Android应用程序中使用Data binding库。

开始
了解如何使开发环境准备好与Data binding库配合使用,包括在Android Studio中支持Data binding代码。

布局和绑定表达式
表达式语言允许您编写将变量连接到布局中的视图的表达式。 Data binding库会自动生成将布局中的视图与数据对象绑定所需的类。 该库提供了诸如导入,变量之类的功能,并且可以在布局中使用这些功能。

库的这些功能与您现有的布局无缝共存。 例如,可以在表达式中使用的绑定变量是在data元素内定义的,该数据元素是UI布局的根元素的同级元素。 这两个元素都包装在一个layout标签中,如以下示例所示:

<layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    <data>
        <variable
            name="viewmodel"
            type="com.myapp.data.ViewModel" />
    </data>
    <ConstraintLayout... /> <!-- UI layout's root element -->
</layout>

使用observable的数据对象
Data Binding提供了类和方法,可轻松观察数据的变化。 当基础数据源发生更改时,您不必担心刷新UI。 您可以使变量或其属性可观察。 该库使您可以观察对象,字段或集合。

生成的绑定类
Data Binding库生成绑定类,这些绑定类用于访问布局的变量和视图。 该页面显示了如何使用和定制生成的绑定类。

绑定适配器
对于每个布局表达式,都有一个绑定适配器,可以进行设置相应属性或侦听器所需的框架调用。 例如,绑定适配器可以负责调用setText()方法来设置text属性,或者调用setOnClickListener()方法来向click事件添加侦听器。 您可以在android.databinding.adapters包中使用最常见的绑定适配器,例如本页示例中使用的android:text属性的适配器。 有关常见绑定适配器的列表,请参阅适配器。 您还可以创建自定义适配器,如以下示例所示:

@BindingAdapter("app:goneUnless")
public static void goneUnless(View view, Boolean visible) {
    view.visibility = visible ? View.VISIBLE : View.GONE;
}

将布局视图绑定到架构组件
Android Support库包含体系结构组件,您可以使用它们来设计健壮,可测试和可维护的应用程序。 您可以将架构组件与Data Binding库一起使用,以进一步简化UI的开发。

两种方式的Data Binding
Data Binding库支持双向数据绑定。 用于这种类型的绑定的表示法支持以下功能:接收属性的数据更改并同时侦听用户对该属性的更新。

翻译自:Android Develop

相关文章

网友评论

      本文标题:【Android Architecture】Data Bindi

      本文链接:https://www.haomeiwen.com/subject/wxoqgctx.html