jetpack组件的databinding在kotlin语言环境中需要注意的坑

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 ->
  }
}

目前这么多,之后还会有更新

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值