일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JetPack
- KB
- 용산 호반써밋 에이디션
- ndk r24
- java
- Mac
- Andorid
- 고금리
- Android Studio
- EditText
- MG더뱅킹정기예금
- kotlin
- 사전청약
- BindingAdapter
- 청약
- ChatGPT
- 달러예금
- ios
- Data Binding
- ndkVersion
- arm-linux-androideabi
- 3rd framework
- RETROFIT
- 예금
- Swift
- 새마을금고
- audio record
- CHAT GPT
- Android
- gradle
- Today
- Total
pear
[android]data binding 3 - Two-way data binding & BindingAdapter example EditText 본문
[android]data binding 3 - Two-way data binding & BindingAdapter example EditText
pearlab 2023. 6. 1. 16:41ViewModel
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{
}
'android > kotlin' 카테고리의 다른 글
[android]data binding 5 - mistake error (0) | 2023.06.01 |
---|---|
[android]data binding 4 - app custom attribute (0) | 2023.06.01 |
[android]data binding 1 - simple example EditText (0) | 2023.06.01 |
[android]data binding 2 - BindingAdapter example EditText (0) | 2023.06.01 |
[kotlin] event interface channel 활용 (0) | 2023.05.24 |