美文网首页
Architecture -- Data Binding Lib

Architecture -- Data Binding Lib

作者: _凌浩雨 | 来源:发表于2018-07-24 18:06 被阅读3次
    1). 简介

    Data Binding Library是一个支持库,允许在布局文件中绑定数据源。最小支持API为14,gradle插件最小为1.5.0。
    示例

    2). 配置
    • app/build.gradle
    android {
        ...
        dataBinding {
            enabled = true
        }
    }
    
    3). 布局绑定表达式
    <?xml version="1.0" encoding="utf-8"?>
    <!--使用DataBinding时最外层包裹的内容-->
    <layout xmlns:android="http://schemas.android.com/apk/res/android">
      <!--数据节点-->
      <data>
        <!--变量-->
        <variable
            name="user"
            type="com.mazaiting.jetpack.architecture.bean.User"/>
        <variable
            name="presenter"
            type="com.mazaiting.jetpack.architecture.expression.ExpressionPresenter"/>
      </data>
    
      <LinearLayout
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent">
        <TextView
            android:text="@{user.firstName}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView
            android:text="@{user.lastName}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView
            android:text="@{String.valueOf(user.index + 1)}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView
            android:text="@{user.display ?? user.lastName}"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <Button
            android:text="监听"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="@{(view) -> presenter.show(view, user) }"
            />
        <Button
            android:text="引用"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="@{ presenter::onClickShow }"
            />
        <Button
            android:text="修改FirstName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="onChangeFirstName"
            />
      </LinearLayout>
    
    </layout>
    
    4). Observable UI
    <?xml version="1.0" encoding="utf-8"?>
    <layout xmlns:android="http://schemas.android.com/apk/res/android">
      <data>
        <!--<variable-->
            <!--name="user"-->
            <!--type="com.mazaiting.jetpack.architecture.bean.ObservableUser"/>-->
        <variable
            name="user"
            type="com.mazaiting.jetpack.architecture.bean.BaseObservableUser"/>
      </data>
      <LinearLayout
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="wrap_content">
        <TextView
            android:text="@{ user.firstName }"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
        <TextView
            android:text="@{ user.lastName }"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
        <TextView
            android:text="@{ String.valueOf(user.age)}"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
        <Button
            android:text="修改FirstName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="onChangeFirstName"
            />
      </LinearLayout>
    </layout>
    
    5). 效果演示
    效果.gif
    打印结果.png
    6). 代码下载
    7). 原文地址

    相关文章

      网友评论

          本文标题:Architecture -- Data Binding Lib

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