I don't want any parameter to the binding adapter than how to use that property in xml

132 Views Asked by At

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??

0

There are 0 best solutions below