Android自定义的属性使用双向绑定

目标:

在xml中自定义属性双向绑定,常用于一些自定义view中的EditText监听数据变化

使用

<EditText  app:bindingName='@={binding.name}'  ... >
  1. 自定义属性的 setXXX
@BindingAdapter("bindingName")
@JvmStatic 
fun setBindingName(edt : EditText, txt : String){
    edt.setText(txt)
}
  1. 自定义属性的 getXXX
@InverseBindingAdapter(attribute = "bindingName")
@JvmStatic 
fun getBindingName(edt : EditText) : String{
     return edt.text.toString()
}
// attribute不能少
  1. .编写属性变化监听器及想要监听的事件,监听器进行关联
@BindingAdapter("bindingNameAttrCbhanged")
@JvmStatic 
fun setBindingListener(edit : EditText, listener: InverseBindingListener?) {
        var txt = ""
        edit.addTextChangedListener(object : TextWatcher{
            override fun afterTextChanged(p0: Editable?) {
                if (txt != p0.toString()){
                	// 会通知属性调用InverseBindingAdapter注解方法
                    listener?.onChange()
                    txt = p0.toString()
                }
               edit.setSelection(txt.length)
            }
            override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
            override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
        })
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值