View Binding 快速入門指南

更新於 發佈於 閱讀時間約 8 分鐘
【Android 入門指南】系列文章目錄:https://bit.ly/3TFgCzu
Android 線上課程教學影片:https://bit.ly/433Offj

課程摘要

本課程學習如何使用 View Binding。

教學影片

若您無法順利觀看教學影片,請先登入您的 YouTube 帳號,然後點擊以下連結加入我們的頻道會員:

  • 一般會員:成為一般會員後,您將能夠觀看我們所提供的一般會員專屬線上課程。
  • 精實會員:成為精實會員後,您將能夠觀看我們所提供的精實會員專屬線上課程。

findViewById 與 View Binding

findViewById (傳統舊方法)

XML 佈局文件中的 id ,需自行定義名稱,注意此為唯一值,不能重複。

<TextView
android:id="@+id/myTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

可以透過 findViewById 的方式獲取 XML 佈局文件中的元件,進行更多該元件設定。

val myTextView = findViewById<TextView>(R.id.myTextView)
myTextView.text = "HKT線上教室"

View Binding (現代新方法)

View Binding 使用方式

程式碼範例

範例名稱:View Binding
作者:HKT (侯光燦)
授權範圍:使用時必須註明出處且不得為商業目的之使用
範例下載點:點我下載

build.gradle (app)

View Binding 預設是被封印,沒有開啟,需要到 build.gradle (app) 開啟 View Binding ,先看一下自己當下 Android Studio 版本,擇一就好不要通通貼上去。

//AAndroid Studio Giraffe 2022.3.1 build.gradle.kts
android {
...
buildFeatures {
viewBinding = true
}
}

其他種版本設定方式:

//Android Studio 4.0 或更高版本
android {
...
buildFeatures {
viewBinding true
}
}

//Android Studio 3.6 (之前版本不能使用)
android {
...
viewBinding {
enabled = true
}
}

activity_main.xml

在空白範本(Empty View Activity)的佈局當中,在 TextView 裡面,新增一個 id 屬性,屬性值設定為為 myTextView。

<TextView
android:id="@+id/myTextView"
...
...
.../>

app\build\generated

進行編譯(build 或 rebuild)後,每個 Layout 就會對應生成一個綁定類別。如:MainActivity.kt 的 Layout 為 「activity_main.xml」,就會產生一個「ActivityMainBinding.java」,路徑如下,可以開啟該檔案觀摩一下,生成的檔案結構。

raw-image

MainActivity.kt

在 Activity 使用方式,如下:

class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.myTextView.text = "HKT線上教室"
}
}

執行結果

raw-image

KT 的偷呷步

若 APP 應用程式裡,有大量頁面(Activity 或 Fragment),可以將 inflate 那一段,用映射的方式寫到自定義的基礎類別裡面,BaseActivity 或 BaseFragment,之後只要在 XML 佈局定義好 id 值,基本上就可以直接拿來用,不用因為畫面元件多,就要事前宣告和 findViewById 定義一堆,大量減少程式與維護的功。

基底類別

可以把共用、常用的東西都放在基底類別。

abstract class BaseActivity<viewBinding : ViewBinding>(val bindingFactory: (LayoutInflater) -> viewBinding) : AppCompatActivity() {

lateinit var binding: viewBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = bindingFactory(layoutInflater)
setContentView(binding.root)
}
}

使用基底類別 View Binding範例

class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::inflate) {

//private lateinit var binding: ActivityMainBinding //省略

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

//binding = ActivityMainBinding.inflate(layoutInflater) //省略
//setContentView(binding.root) //省略

binding.btn1.text = "HKT線上教室"
}
}

findViewById 與 View Binding 比較

View Binding 相較於 findViewById 有以下優點

  • Null 安全
  • 類型安全
  • 大幅簡化程式碼
留言
avatar-img
留言分享你的想法!
avatar-img
HKT實驗室
22會員
261內容數
哈囉!歡迎光臨我的沙龍!我是 KT,一位對應用程式開發充滿熱情的開發者。在這個專屬空間,我將與您分享我在應用開發領域的深入學習心得和豐富的實戰經驗。如果您對應用程式開發技術同樣充滿好奇,渴望不斷探索新知,歡迎成為我們的會員,一起在應用程式開發的旅途上,探索更深層次的技術世界,享受學習的樂趣。
HKT實驗室的其他內容
2025/01/31
踏上 Android 開發成功之路!2025 學習路線圖,從 Kotlin 程式語言基礎起步,逐步深入進階學習。掌握架構設計,利用豐富學習資源,設定短期與長期目標。遵循本指南,打造出令人驚艷的 Android 應用程式。
Thumbnail
2025/01/31
踏上 Android 開發成功之路!2025 學習路線圖,從 Kotlin 程式語言基礎起步,逐步深入進階學習。掌握架構設計,利用豐富學習資源,設定短期與長期目標。遵循本指南,打造出令人驚艷的 Android 應用程式。
Thumbnail
2025/01/23
針對 Android 開發提供了全面指導,包括架構規範(推薦 MVVM 模式與 Jetpack 元件)、語言選擇(優先使用 Kotlin)、效能優化(避免主執行緒阻塞)、安全性(使用 HTTPS 和最小權限原則)、相容性與適配(支援不同螢幕尺寸與多語言)、以及測試規範(單元測試與 UI 測試)。
Thumbnail
2025/01/23
針對 Android 開發提供了全面指導,包括架構規範(推薦 MVVM 模式與 Jetpack 元件)、語言選擇(優先使用 Kotlin)、效能優化(避免主執行緒阻塞)、安全性(使用 HTTPS 和最小權限原則)、相容性與適配(支援不同螢幕尺寸與多語言)、以及測試規範(單元測試與 UI 測試)。
Thumbnail
2024/01/02
全面掌握 Android 開發入門指南參考資料
2024/01/02
全面掌握 Android 開發入門指南參考資料
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
本課程學習如何處理按鈕點擊事件並透過 Logcat 日誌輸出資訊確認按鈕邏輯是否正確。
Thumbnail
本課程學習如何處理按鈕點擊事件並透過 Logcat 日誌輸出資訊確認按鈕邏輯是否正確。
Thumbnail
本課程學習如何提取共同屬性,透過 Style 樣式包,套用至每個按鈕。來提升佈局的可讀性和好維護性。
Thumbnail
本課程學習如何提取共同屬性,透過 Style 樣式包,套用至每個按鈕。來提升佈局的可讀性和好維護性。
Thumbnail
本課程學習如何如何實作計算機介面,佈局文字元件及按鈕。學習使用 LinearLayout 垂直排列元件,調整背景色。透過 GridLayout 佈局計算機按鈕。
Thumbnail
本課程學習如何如何實作計算機介面,佈局文字元件及按鈕。學習使用 LinearLayout 垂直排列元件,調整背景色。透過 GridLayout 佈局計算機按鈕。
Thumbnail
本課程學習如何使用 View Binding。
Thumbnail
本課程學習如何使用 View Binding。
Thumbnail
本課程學習如何使用 LinearLayout 線性佈局中的 layout_weight 權重屬性。
Thumbnail
本課程學習如何使用 LinearLayout 線性佈局中的 layout_weight 權重屬性。
Thumbnail
本課程學習如何使用 LinearLayout 線性佈局中的 layout_gravity 對齊屬性。
Thumbnail
本課程學習如何使用 LinearLayout 線性佈局中的 layout_gravity 對齊屬性。
Thumbnail
本課程學習如何使用 LinearLayout 線性佈局中的 gravity 對齊屬性。
Thumbnail
本課程學習如何使用 LinearLayout 線性佈局中的 gravity 對齊屬性。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News