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

tech2025-12-17  7

目标:

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

使用

<EditText app:bindingName='@={binding.name}' ... > 自定义属性的 setXXX @BindingAdapter("bindingName") @JvmStatic fun setBindingName(edt : EditText, txt : String){ edt.setText(txt) } 自定义属性的 getXXX @InverseBindingAdapter(attribute = "bindingName") @JvmStatic fun getBindingName(edt : EditText) : String{ return edt.text.toString() } // attribute不能少 .编写属性变化监听器及想要监听的事件,监听器进行关联 @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) {} }) }
最新回复(0)