Kotlin通過Id操作View,Adapter和動態載入Xml檔案也可以類似操作
阿新 • • 發佈:2019-01-01
如果使用kotlin,什麼butterknife繫結,Xutil註解都不需要,只需要通過id就可以操作view,非常方便,但是在使用的過程中還是遇到兩個值得記錄的問題如下:
- 針對adapter中通過id來操作
- 針對動態載入佈局通過id來操作
其實兩者本質上是一樣的,都是通過view訪問Id來操作,具體是由kotlin來繫結
上程式碼一步一步來解析
首先想要用id來操作別,我們的builde檔案要加上Extensions配置
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
然後就可以愉快的使用
activity和fragment直接像想這樣就可以訪問了:
<Switch
android:id="@+id/main_sw_packet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp" />
通過id設定監聽:
main_sw_packet?.setOnCheckedChangeListener(this)
可以自動導包像這樣
import kotlinx.android.synthetic.<你介面的Xml檔名>.*
adapter這樣操作:
要匯入的包路徑:
import kotlinx.android.synthetic.<你介面的Xml檔名>.view.*
通過ViewId訪問:
holder.itemView.money_tv_name?.text = entity.name
holder.itemView表示adapter每條資料view
動態載入的view操作:
要匯入的包與Adapter類似,直接view.id就可以操作了
例如我這裡:
nav_view?.getHeaderView(0)?.main_tv_username?.text = userName
nav_view?.getHeaderView(0)獲取父View,後邊就可以通過id愉快的操作啦
目前網上這類資料還沒有,官網描述也不是特別清楚,這裡僅作記錄,如有疑問可以留言