Android之View Binding使用

View Binding

之前我們與視圖交互的方式有findViewById、kotlin中引入Android Kotlin Extensions後直接通過id進行訪問

現在有了新的選擇–View Binding。

在模塊中啓用視圖綁定之後,系統會爲該模塊中的每個 XML 佈局文件生成一個綁定類。綁定類的實例包含對在相應佈局中具有 ID 的所有視圖的直接引用。

打開配置

View Binding可按模塊啓用。要在某個模塊中啓用,在該模塊的build.gradle中添加如下配置:

android {
        ...
        viewBinding {
            enabled = true
        }
        ...
    }

重新編譯後系統會爲每個佈局文件生成對應的Binding類,該類中包含對應佈局中具有 ID 的所有視圖的直接引用。生成類的目錄在 模塊根目錄/build/generated/data_binding_base_class_source_out下。

使用實例

activity_main.xml:

<LinearLayout ... >
        <TextView android:id="@+id/tvName" />
        <TextView android:text="no id"/>
        <Button android:id="@+id/btnOpen"/>
</LinearLayout>

綁定類的類名是xml的名稱後面加“Binding”。

最後生成的綁定類類名是ActivityMainBinding。

這個類有兩個成員變量tvName和btnOpen,還包含一個getRoot()方法,返回根視圖,此例中返回LinearLayout。

要獲取綁定類的實例,可以通過靜態 inflate() 方法。

private lateinit var binding: ActivityMainBinding

@Override
fun onCreate(savedInstanceState: Bundle) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(inflater)
    setContentView(binding.root)
}

然後就可以操作某些控件了:

binding.tvName = "name"
binding.btnOpen.setOnClickListener{
    Log.d(TAG,"btnOpen click")
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章