grape

[android]data binding 2 - BindingAdapter example EditText 본문

dev/aos

[android]data binding 2 - BindingAdapter example EditText

grapelab 2023. 10. 10. 10:41

databinding send view & BindingAdapter

 

ViewModel

class ViewModel() : ViewModel() {

 

//If want update view data then use LiveData

 

//EditText support String simple
    private val _text = MutableLiveData(String)
    val data: LiveData = _text

 

//EditText not support Int Type need BindingAdapter

    private val _num = MutableLiveData(String)
    val num: LiveData = _num

 

 

layout

    <data>
        <variable
            name="viewmodel"
            type="com.test.name.ViewModel" />
    </data>

<androidx.constraintlayout.widget.ConstraintLayout
...

//simple '{data}'

                    <EditText
                        android:text='@{viewmodel.text}'
                    />

//need BindingAdapter Int

                    <EditText
                        android:text='@{viewmodel.num}'
                    />

 

 

BindingAdapter

object EditTextDataBindingAdapter{

//EditText Int Type BindingAdapter

//need to static
    @JvmStatic

//binding target "android:text"

    @BindingAdapter("android:text")

// function name is user define

    fun setText(view: TextView, text: Int)

   {
        view.text = text.toString()
    }

}

 

Next