iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0

過去 Android 要在 Activity、Fragment 跟 xml 互動的時候,會採用 findViewById(),而且在 xml 上的每個 View 都得加上 id,如果有大量的 View 需要做變化的話就得每個都命名然後再綁定,非常麻煩。

Data binding Library 是一個 Support Library,可以幫助我們簡易實現 MVVM 架構。它允許我們在 xml 上使用聲明性格式而不是撰寫程式的方式將佈局中的 UI 組件綁定到應用城市中的資料來源。

Data Binding 如何使用

首先添加 gradle

android{
    ......
    dataBinding{
       enabled = true
    }
}

在來要調整需要執行 Data Binding 的 xml,在外層加上 <layout> 與綁定 data 來源,就可以在指定 UI 使用這個 data。

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>
        <variable
            name="viewModel"
            type="com.test.ViewModel" />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
      <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@{viewModel.userId}"/>
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

要記得在 Activity / Fragment 綁定 View 跟 ViewModel。

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding
    val viewModel = MainViewModel()
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
        binding.viewModel = viewModel
    }
}

參考資料

Data Binding Library


上一篇
第十四天:Android Architecture Components 之 WorkManager
下一篇
第十六天:Android Architecture Components 之 Navigation
系列文
轉職成 Android Developer 的最後一哩路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言