您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么在Android中使用View Binding方法,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
使用
View Binding可按模塊啟用。要在某個模塊中啟用,在該模塊的build.gradle中添加如下配置:
android { ... viewBinding { enabled = true } }
用法
當某個模塊啟用View Binding后,系統會為該模塊中包含的每個 XML 布局文件各生成一個綁定類。每個綁定類均包含對根視圖以及具有id 的所有視圖的引用。綁定類的類名是xml的名稱后面加“Binding”。
例如,假設某個布局文件名為 比如activity_main.xml:
<LinearLayout ... > <TextView android:id="@+id/tvName" /> <TextView android:text="no id"/> <Button android:id="@+id/btnOpen"/> </LinearLayout>
那么生成的綁定類類名是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") }
區別
與findViewById的區別:空安全和類型安全,不存在因引用了一個錯誤的id而導致的空指針異常或者類型轉換異常。
與databinding的區別:databinding僅處理使用 <layout> 代碼創建的數據綁定布局;View Binding不支持布局變量或布局表達式,因此它不能用于在xml中將布局與數據綁定。
與Android Kotlin Extensions的區別:在使用上,后者簡單粗暴,直接id進行訪問,而View Binding需要創建綁定類的實例;后者有一些不友好的地方,比如相同的id存在于多個xml,容易導錯包,如果包導錯了,會有可能別的View用錯id導致空指針,而View Binding顯然不會有這種情況。
關于怎么在Android中使用View Binding方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。