Kotlin通过Id操作View,Adapter和动态加载Xml文件也可以类似操作

时间:2022-09-15 23:41:01

如果使用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愉快的操作啦
目前网上这类资料还没有,官网描述也不是特别清楚,这里仅作记录,如有疑问可以留言