I have created binding adapter to return editText string to upper case as below.
@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()
}
and in 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" />
Here in Binding adapter I have passed an parameter text : String? so that in xml I can use app:holder="@={viewModel.txtName}" but that parameter is useless and without it i can't set app:holder in xml ,so how to remove that useless parameter??