1.背景是我之前使用databinding是使用java开发的,目前换成kotlin进行开发,遇到一些问题,就记录一下
一。需要将@BindingAdapter 放在object 修饰的类中,
举例:object DataBindingUtils {
@BindingAdapter("imageUrl")
@JvmStatic
fun loadImage(view: ImageView, url: String) {
Glide.with(view.context).load(url).into(view)
}
}`
使用 companion object
class DataBindingUtils {
companion object {
@BindingAdapter("imageUrl")
@JvmStatic
fun loadImage(view: ImageView, url: String) {
Glide.with(view.context).load(url).into(view)
}
}
}
二,如果需要传递view的id到@BindingAdapter
要这么处理
在xml中:
<CheckBox
android:layout_width="21dp"
android:layout_height="21dp"
android:layout_marginLeft="15dp"
android:background="@drawable/login_eye"
android:button="@null"
app:editTextId="@{@id/et_pwd}"
/>
在@BindingAdapter中
kotlin中一定要加***@JvmStatic***
@BindingAdapter("editTextId",
requireAll = false
)
@JvmStatic
fun eyeChange(box: CheckBox, @IdRes editTextId: Int) {
val parent = box.rootView
val editText = parent.findViewById(editTextId) as EditText
box.setOnCheckedChangeListener { buttonView, isChecked ->
}
}
目前这么多,之后还会有更新