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