美文网首页
Android Jetpack: DataBinding | 数

Android Jetpack: DataBinding | 数

作者: 星夜风微凉i | 来源:发表于2019-02-20 10:56 被阅读4次

    数据绑定库是一个支持库,允许您使用声明性格式而不是以编程方式将布局中的UI组件绑定到应用程序中的数据源。

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

    findViewById<TextView>(R.id.sample_text).apply {   

        text = viewModel.userName

    以下示例说明如何使用数据绑定库直接在布局文件中将文本分配给窗口小部件。这消除了调用上面显示的任何Java代码的需要。注意@{}在赋值表达式中使用语法:

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

    布局文件中的绑定组件允许您在活动中删除许多UI框架调用,使其更简单,更易于维护。这还可以提高应用程序的性能,并有助于防止内存泄漏和空指针异常。

    使用数据绑定库


    使用以下页面了解如何在Android应用程序中使用数据绑定库。

    开始    

        了解如何使您的开发环境随时可以使用数据绑定库,包括支持Android Studio中的数据绑定代码。

    布局和绑定表达式    

        表达式语言允许您编写将变量连接到布局中视图的表达式。数据绑定库自动生成将布局中的视图与数据对象绑   定所需的类。该库提供了可在布局中使用的导入,变量和包含等功能。

        库的这些功能与您现有的布局无缝共存。例如,可以在表达式中使用的绑定变量在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>

    使用可观察的数据对象

    数据绑定库提供了类和方法,可以轻松地观察数据以进行更改。您不必担心在基础数据源发生更改时刷新UI。您可以观察变量或其属性。该库允许您使对象,字段或集合可观察。

    生成的绑定类

    数据绑定库生成用于访问布局的变量和视图的绑定类。此页面显示如何使用和自定义生成的绑定类。

    绑定适配器

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

    @BindingAdapter("app:goneUnless")

    fun goneUnless(view: View, visible: Boolean) {   

        view.visibility = if (visible) View.VISIBLE else View.GONE

    将布局视图绑定到体系结构组件

    Android支持库包含架构组件,您可以使用它来设计健壮,可测试和可维护的应用程序。您可以将架构组件与数据绑定库一起使用,以进一步简化UI的开发。

    双向数据绑定

    数据绑定库支持双向数据绑定。用于此类绑定的表示法支持接收对属性的数据更改并同时侦听对该属性的用户更新的能力。

    其他资源


    请参阅Android数据绑定库示例

    相关文章

      网友评论

          本文标题:Android Jetpack: DataBinding | 数

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