我创建了绑定适配器以将editText字符串返回为大写,如下所示。
@BindingAdapter(value = ["app:holder", "custom:holderAttrChanged"], requireAll = false)
fun setHolder(editText : EditText, text : String?, listener : InverseBindingListener) {
editText.doOnTextChanged{ _ : CharSequence?, _ : Int, _ : Int, _ : Int ->
listener.onChange()
}
}
@InverseBindingAdapter(attribute = "app:holder", event = "custom:holderAttrChanged")
fun getHolder(editText : EditText) : String? {
return editText.text.toString().toUpperCase()
}
在 XML 中
<EditText
android:id="@+id/dfsc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="3"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:autofillHints=""
android:hint="@string/lname"
android:text="@{viewModel.txtName}"
app:holder="@={viewModel.txtName}"
android:imeOptions="actionNext"
android:inputType="text" />
在绑定适配器中,我传递了一个参数 text : String?
,以便在 xml 中我可以使用app:holder="@={viewModel.txtName}"
但该参数是无用的,没有它我无法app:holder
在 xml 中设置,那么如何删除那个无用的参数?