ViewBinding的使用和databinding的比較

使用方法:

image.png

在module的gradle文件下加入

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

加入之后ViewBinding后,創(chuàng)建的每一個xml布局都會生成一個對應(yīng)的xxxbinding
比如一開始生成的activity_main.xml對應(yīng)的文件就是 ActivityMainBinding

class MainActivity : AppCompatActivity() {

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

image.png

上面的三個屬性是layout 布局文件的id。
另外還有個方法 就是getRoot 方法 返回對應(yīng)跟布局view。
如果不想生成就在對layout 的根布局里面加上屬性 tools:viewBindingIgnore="true"

總結(jié)
相較于databinding的區(qū)別 viewbinding 的功能好像更少無法進(jìn)行雙向綁定。
但是它的優(yōu)點(diǎn)也是明顯的不需要對原有的xml 文件進(jìn)行侵入。而databinding 首先是侵入式的。
且在xml 進(jìn)行這種綁定也容易帶來很多問題

說句實(shí)話,我不相信 DataBinding。對于它想解決的問題來說,這種方案在過于復(fù)雜。在使用 DataBinding 的時候,需要把代碼邏輯放到 XML 布局中,這聽起來很不錯,但是經(jīng)驗(yàn)豐富的開發(fā)人員都不會這么做,這個做法也是 Databinding 的另一個缺點(diǎn)
因此使用viewbinding 更好。

思考
一個庫功能是否復(fù)雜也許并不重要,而是適用于所對應(yīng)的環(huán)境。并且對原有代碼影響越少越好

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容