2

我创建了绑定适配器以将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 中设置,那么如何删除那个无用的参数?

4

0 回答 0