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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2025/6/17 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【JetPack】数据绑定 DataBinding 简介 ( 使用要求 | Gradle 版本 | 定义数据类 | 定义数据绑定布局 | Activity 数据绑定 | 绑定类生成规则 ) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

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



GitHub 代碼示例 : Data_Binding_Demo



I . 數(shù)據(jù)綁定 簡(jiǎn)介



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


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



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



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


① 數(shù)據(jù)綁定最小兼容版本 : Android 4.0 , API 版本 14 ;

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


2 . Gradle 插件版本 與 Gradle 版本 對(duì)應(yīng)關(guān)系 : 推薦使用當(dāng)前最新配置 ( 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 版本對(duì)應(yīng) 關(guān)系 : 如果對(duì)應(yīng)錯(cuò)了 , Android 應(yīng)用無(wú)法編譯 ;

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 . 數(shù)據(jù)綁定 使用流程 一 : 啟用數(shù)據(jù)綁定



啟用數(shù)據(jù)綁定 : 在 Module 的 build.gradle 構(gòu)建腳本中 的 android 中配置如下代碼 :

/** 啟用數(shù)據(jù)綁定 */ dataBinding {enabled = true }

IV . 數(shù)據(jù)綁定 使用流程 二 : 定義數(shù)據(jù)類



定義數(shù)據(jù)類 :

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

V . 數(shù)據(jù)綁定 使用流程 三 : 定義數(shù)據(jù)綁定布局



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

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

2 . 定義對(duì)象數(shù)據(jù)標(biāo)簽 : 使用 <data> 標(biāo)簽 , 在標(biāo)簽中定義 <variable> 字標(biāo)簽 , 在 <variable> 標(biāo)簽中使用 name 屬性定義變量名 , type 屬性定義類的 包名.類名 全路徑類型名稱 ;

如下 : 定義 kim.hsl.db.Student 類的對(duì)象 student , 之后就使用 student 變量名來(lái)調(diào)用類中的字段 , 如 student.name 獲取對(duì)象的 name 屬性 ;

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

3 . 定義實(shí)際的布局 : 定義與 <data> 標(biāo)簽平級(jí)的布局組件根標(biāo)簽 , 這個(gè)布局組件就是原來(lái)的根視圖 ; 之后的內(nèi)容就一樣了 , 在根視圖中 , 定義各種用于 UI 交互的組件 ;

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

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

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

<?xml version="1.0" encoding="utf-8"?><!-- 根標(biāo)簽是 layout, 將根布局的命名空間都拷貝到根標(biāo)簽中 --> <layoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"><!-- data 標(biāo)簽中設(shè)置要綁定的對(duì)象名稱 和 對(duì)應(yīng)的類名 --><data><variable name="student" type="kim.hsl.db.Student"/></data><!-- 實(shí)際的布局, 被改造前是根標(biāo)簽 --><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 . 數(shù)據(jù)綁定 使用流程 四 : Activity 數(shù)據(jù)綁定



1 . 聲明 數(shù)據(jù)綁定類 對(duì)象 : 在成員變量中 , 聲明數(shù)據(jù)綁定類對(duì)象 ;

/** 數(shù)據(jù)綁定類 */lateinit var binding : ActivityMainBinding

2 . 聲明 數(shù)據(jù)類 對(duì)象 : 在成員變量中 , 聲明被綁定的數(shù)據(jù)對(duì)象 ;

/** 要綁定的數(shù)據(jù)類對(duì)象 */ lateinit var student : Student

3 . 綁定視圖 : 使用 DataBindingUtil 的 setContentView 方法 , 綁定視圖 , 獲取數(shù)據(jù)綁定類 對(duì)象 ;

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

4 . 綁定數(shù)據(jù) : 創(chuàng)建 Student 對(duì)象 , 設(shè)置給 數(shù)據(jù)綁定類 對(duì)象 ;

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

5 . Activity 完整代碼實(shí)現(xiàn) :

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

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



1 . 綁定類 : 數(shù)據(jù)綁定 與 視圖綁定 生成的綁定類是相同的 , 數(shù)據(jù)綁定類比視圖綁定類中多一個(gè)被綁定數(shù)據(jù)變量 ;


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

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


① 綁定類字段對(duì)應(yīng)布局 ID : activity_main.xml 布局文件中 , 第一個(gè)和第二個(gè) TextView 都定義了 id 分別是 text_view 和 text_view2 ;

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

③ 綁定類組件字段訪問(wèn) : 通過(guò) ActivityMainBinding 對(duì)象可以直接訪問(wèn)這兩個(gè)組件 ;

④ 不生成字段 : 第三個(gè) TextView 沒(méi)有定義 id 屬性 , ActivityMainBinding 中不會(huì)生成該組件對(duì)應(yīng)的字段 ;


4 . 生成綁定數(shù)據(jù)字段規(guī)則 : 在 <data> 標(biāo)簽中定義的數(shù)據(jù)類對(duì)象 , 會(huì)在綁定類中生成 ;



GitHub 代碼示例 : Data_Binding_Demo



總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。