1. 程式人生 > >Kotlin通過Id操作View,Adapter和動態載入Xml檔案也可以類似操作

Kotlin通過Id操作View,Adapter和動態載入Xml檔案也可以類似操作

如果使用kotlin,什麼butterknife繫結,Xutil註解都不需要,只需要通過id就可以操作view,非常方便,但是在使用的過程中還是遇到兩個值得記錄的問題如下:

  1. 針對adapter中通過id來操作
  2. 針對動態載入佈局通過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愉快的操作啦
目前網上這類資料還沒有,官網描述也不是特別清楚,這裡僅作記錄,如有疑問可以留言