ViewBinding的簡單使用


Android自家的,又可以省去findviewbyid(),而且Butterknife上大神都已經推薦使用的,還有什么理由不去改寫呢

build.gradle

開啟viewBinding功能

android {
	...
	viewBinding.enabled = true
}

上面方法提示過時,更改為下面的方法

android {
      ...
    buildFeatures{
        viewBinding true
    }
}

Activity 綁定

說明一下,這個是kotlin語法的,java語法的寫法差不多,只是語法有些差異

private lateinit var mBinding: ActivityEbookBinding

//有個坑特別說明一下,這里的ActivityEbookBinding不是什么內部類,而是你的layout對應的databinding類,開始一直以為有什么包沒有引入呢。

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    mBinding = ActivityEbookBinding.inflate(layoutInflater)
    setContentView(mBinding.root)
}

java

這里還是放一下java語法的代碼吧,省得還沒有轉到kotlin的朋友看了一頭霧水
這里再強調一下,記得將我代碼中的ActivityEbookBinding換成你自己 layout 對應的 binding 上,命名規則就是你的layout去掉下划線然后首字母大寫然后末尾加上Binding就是了

private ActivityEbookBinding mBinding;
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    mBinding = ActivityEbookBinding.inflate(getLayoutInflater());
    setContentView(mBinding.getRoot());
}

調用

mBinding中可以直接根據id找到相應的控件進行操作

mBinding.bookContent.setText("HelloWorld");

這里再記錄一個小坑,就是如果你的layout里面控件的id有使用“_”下划線的話,viewbinding也會將它去掉下划線改成駝峰命名,並不是你的控件沒有被認到,害我找了半天才想到這一茬。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM