| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- EditText
- BindingAdapter
- Kotlin
- Android
- ndkVersion
- IOS
- Framework
- Registering an InstanceCreator with Gson for this type may fix this problem
- 3rd part
- DispatchQueue
- data binding
- boot
- buildconfigfield
- gradle
- Swift
- arm-linux-androideabi
- Jetpack
- xcframework
- NDK
- retrofit
- AOS
- VM arguments
- 3rd framework
- Java
- Compose
- defaultconfig
- mac
- Eclipse
- Andorid
- Chat GPT
- Today
- Total
grape
[android]data binding 3 - Two-way data binding & BindingAdapter example EditText 본문
[android]data binding 3 - Two-way data binding & BindingAdapter example EditText
grapelab 2023. 10. 12. 15:22ViewModel
class ViewModel() : ViewModel() {
//EditText support String simple
private val _text = MutableLiveData(String)
val text: LiveData = _text
//EditText not support Int need BindingAdapter
private val _num = MutableLiveData(String)
val num: LiveData = _num
layout
<data>
<variable
name="viewmodel"
type="com.test.test.ViewModel" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
...
//one way '{data}'
<EditText
android:text='@{viewmodel.text}'
/>
//two way insert `={data}'
<EditText
android:text='@={viewmodel.text}'
/>
//two way & BindingAdapter
<EditText
android:text='@={viewmodel.num}'
/>
BindingAdapter
// object name is user define
object EditTextDataBindingAdapter{
//one way BindingAdapter send view
//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()
}
//tow way BindingAdapter from view
@JvmStatic
//binding target event = attribute = "android:text", event = "android:textAttrChanged")
@InverseBindingAdapter(attribute = "android:text", event = "android:textAttrChanged")
fun getText(view: TextView): Int {
return view.text.toString().toIntOrNull() ?: 0
}
}
//if need more type BindingAdapter then make at tanother object
//because error conflicting overloads
object EditTextDataBindingAdapter2{
}
Next
'dev > aos' 카테고리의 다른 글
| [android]data binding 5 - mistake error (0) | 2023.10.12 |
|---|---|
| [android]data binding 4 - app custom attribute (0) | 2023.10.12 |
| [android]data binding 2 - BindingAdapter example EditText (0) | 2023.10.10 |
| [android]data binding 1 - simple example EditText (0) | 2023.10.10 |
| [kotlin] event interface channel 활용 (0) | 2023.10.09 |