日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【JetPack】数据绑定 DataBinding 简介 ( 使用要求 | Gradle 版本 | 定义数据类 | 定义数据绑定布局 | Activity 数据绑定 | 绑定类生成规则 )

發(fā)布時間:2025/6/17 编程问答 31 豆豆

文章目錄

        • I . 數據綁定 簡介
        • II . 數據綁定 使用前提 ( 環(huán)境支持 )
        • III . 數據綁定 使用流程 一 : 啟用數據綁定
        • IV . 數據綁定 使用流程 二 : 定義數據類
        • V . 數據綁定 使用流程 三 : 定義數據綁定布局
        • VI . 數據綁定 使用流程 四 : Activity 數據綁定
        • VII . 數據綁定類 生成規(guī)則



GitHub 代碼示例 : Data_Binding_Demo



I . 數據綁定 簡介



1 . 數據綁定作用 : 不使用 Java 代碼 , 直接在 layout 布局文件 中完成組件的 文本 , 圖片 等數據 的設置 ;


2 . 數據綁定 與 視圖綁定 : 視圖綁定僅僅是替代了 Java 代碼中的 findViewById ( ) 操作 , 比視圖綁定更進一步 , 在替代上述操作的基礎上 , 還為其設置了具體的值 ; 數據綁定比視圖綁定功能更強大 ;



II . 數據綁定 使用前提 ( 環(huán)境支持 )



1 . 數據綁定 ( DataBinding ) 使用前提 :


① 數據綁定最小兼容版本 : Android 4.0 , API 版本 14 ;

② Gradle 插件版本 : 1.5.0 以上的版本 ;


2 . Gradle 插件版本 與 Gradle 版本 對應關系 : 推薦使用當前最新配置 ( 2020/04/15 ) , 最新 Gradle 插件版本是 3.6.1 , 最新 Gradle 版本是 5.6.4 ;


① Gradle 插件版本 : 在 Project 下的 build.gradle 中配置 , 如下配置的是 3.6.1 版本的 Gradle 插件 ;

② Gradle 版本 : 在 Project 下的 gradle/wrapper/gradle-wrapper.properties 文件中配置 , 如下配置的是 5.6.4 版本的 Gradle ;


3 . Gradle 插件版本 與 Gradle 版本對應 關系 : 如果對應錯了 , Android 應用無法編譯 ;

Gradle 插件版本Gradle 版本
1.0.0 - 1.1.32.2.1 - 2.3
1.2.0 - 1.3.12.2.1 - 2.9
1.5.02.2.1 - 2.13
2.0.0 - 2.1.22.10 - 2.13
2.1.3 - 2.2.32.14.1+
2.3.0+3.3+
3.0.0+4.1+
3.1.0+4.4+
3.2.0 - 3.2.14.6+
3.3.0 - 3.3.24.10.1+
3.4.0 - 3.4.15.1.1+
3.5.0+5.4.1-5.6.4


III . 數據綁定 使用流程 一 : 啟用數據綁定



啟用數據綁定 : 在 Module 的 build.gradle 構建腳本中 的 android 中配置如下代碼 :

/** 啟用數據綁定 */ dataBinding {enabled = true }

IV . 數據綁定 使用流程 二 : 定義數據類



定義數據類 :

package kim.hsl.db/** 視圖綁定數據類 */ data class Student (var name:String, var age:Int)

V . 數據綁定 使用流程 三 : 定義數據綁定布局



1 . 定義根標簽及命名空間 : 定義 <layout> 根標簽 , 并且將布局文件的命名空間定義在該標簽中 ;

<?xml version="1.0" encoding="utf-8"?><!-- 根標簽是 layout, 將根布局的命名空間都拷貝到根標簽中 --> <layoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"> </layout>

2 . 定義對象數據標簽 : 使用 <data> 標簽 , 在標簽中定義 <variable> 字標簽 , 在 <variable> 標簽中使用 name 屬性定義變量名 , type 屬性定義類的 包名.類名 全路徑類型名稱 ;

如下 : 定義 kim.hsl.db.Student 類的對象 student , 之后就使用 student 變量名來調用類中的字段 , 如 student.name 獲取對象的 name 屬性 ;

<?xml version="1.0" encoding="utf-8"?><!-- 根標簽是 layout, 將根布局的命名空間都拷貝到根標簽中 --> <layoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><!-- data 標簽中設置要綁定的對象名稱 和 對應的類名 --><data><variable name="student" type="kim.hsl.db.Student"/></data> </layout>

3 . 定義實際的布局 : 定義與 <data> 標簽平級的布局組件根標簽 , 這個布局組件就是原來的根視圖 ; 之后的內容就一樣了 , 在根視圖中 , 定義各種用于 UI 交互的組件 ;

<?xml version="1.0" encoding="utf-8"?><!-- 根標簽是 layout, 將根布局的命名空間都拷貝到根標簽中 --> <layoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><!-- data 標簽中設置要綁定的對象名稱 和 對應的類名 --><data><variable name="student" type="kim.hsl.db.Student"/></data><!-- 實際的布局, 被改造前是根標簽 --><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"></androidx.constraintlayout.widget.ConstraintLayout> </layout>

4 . 調用變量值 : 在 @{} 中使用布局綁定表達式調用 student 變量的值 , 表達式語法操作與代碼基本一致 , 如方位 student 對象的 name 屬性 , 使用 @{student.name} 即可 ;

該布局是最終的完全體 , 顯示內容是 “姓名 : Tom 年齡 : 18” ;

<?xml version="1.0" encoding="utf-8"?><!-- 根標簽是 layout, 將根布局的命名空間都拷貝到根標簽中 --> <layoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><!-- data 標簽中設置要綁定的對象名稱 和 對應的類名 --><data><variable name="student" type="kim.hsl.db.Student"/></data><!-- 實際的布局, 被改造前是根標簽 --><androidx.constraintlayout.widget.ConstraintLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/hello"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text='@{"姓名 : " + student.name + " 年齡 : " + student.age}'app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout> </layout>

VI . 數據綁定 使用流程 四 : Activity 數據綁定



1 . 聲明 數據綁定類 對象 : 在成員變量中 , 聲明數據綁定類對象 ;

/** 數據綁定類 */lateinit var binding : ActivityMainBinding

2 . 聲明 數據類 對象 : 在成員變量中 , 聲明被綁定的數據對象 ;

/** 要綁定的數據類對象 */ lateinit var student : Student

3 . 綁定視圖 : 使用 DataBindingUtil 的 setContentView 方法 , 綁定視圖 , 獲取數據綁定類 對象 ;

/** 綁定視圖, 并獲取數據綁定類 */ binding = DataBindingUtil.setContentView(this, R.layout.activity_main)

4 . 綁定數據 : 創(chuàng)建 Student 對象 , 設置給 數據綁定類 對象 ;

/** 創(chuàng)建要綁定的數據對象 */ student = Student("Tom", 18) /** 將要綁定的數據對象設置到數據綁定類中 */ binding.student = student

5 . Activity 完整代碼實現 :

package kim.hsl.dbimport android.app.Activity import android.os.Bundle import androidx.databinding.DataBindingUtil import kim.hsl.db.databinding.ActivityMainBindingclass MainActivity : Activity() {/** 要綁定的數據類對象 */lateinit var student : Student/** 數據綁定類 */lateinit var binding : ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)/** 綁定視圖, 并獲取數據綁定類 */binding = DataBindingUtil.setContentView(this, R.layout.activity_main)/** 創(chuàng)建要綁定的數據對象 */student = Student("Tom", 18)/** 將要綁定的數據對象設置到數據綁定類中 */binding.student = student} }

VII . 數據綁定類 生成規(guī)則



1 . 綁定類 : 數據綁定 與 視圖綁定 生成的綁定類是相同的 , 數據綁定類比視圖綁定類中多一個被綁定數據變量 ;


2 . 綁定類組件成員名稱生成規(guī)則 : 組件中的字段也是按照駝峰式命名生成 , 首字母小節(jié) , 中間的字母首字母大寫 , 如 id 是 text_view , 生成的成員變量名稱是 textView ;

3 . 生成組件字段規(guī)則 : 只要在布局文件中定義了 id 屬性的組件 , 綁定類中就會為該組件生成相應的字段 ;


① 綁定類字段對應布局 ID : activity_main.xml 布局文件中 , 第一個和第二個 TextView 都定義了 id 分別是 text_view 和 text_view2 ;

② 綁定類生成的字段 : 那么系統(tǒng)會在 ActivityMainBinding 中生成 TextView textView 和 TextView textView2 兩個字段 ;

③ 綁定類組件字段訪問 : 通過 ActivityMainBinding 對象可以直接訪問這兩個組件 ;

④ 不生成字段 : 第三個 TextView 沒有定義 id 屬性 , ActivityMainBinding 中不會生成該組件對應的字段 ;


4 . 生成綁定數據字段規(guī)則 : 在 <data> 標簽中定義的數據類對象 , 會在綁定類中生成 ;



GitHub 代碼示例 : Data_Binding_Demo



總結

以上是生活随笔為你收集整理的【JetPack】数据绑定 DataBinding 简介 ( 使用要求 | Gradle 版本 | 定义数据类 | 定义数据绑定布局 | Activity 数据绑定 | 绑定类生成规则 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。