DataBinding
DataBinding μ΄λ
DataBinding λΌμ΄λΈλ¬λ¦¬λ νλ‘κ·Έλλ§€ν± λ°©μμ΄ μλλΌ μ μΈμ νμμΌλ‘ λ μ΄μμμ UI ꡬμ±μμλ₯Ό μ±μ λ°μ΄ν° μμ€μ κ²°ν©ν μ μλ λΌμ΄λΈλ¬λ¦¬μ΄λ€.
// default (ui class)
findViewById<TextView>(R.id.sample_text).apply {
text = viewModel.userName
}
// viewBinding (ui class)
binding.sampleText.text = viewModel.userName
// dataBinding (xml)
<TextView
android:text="@{viewModel.userName}"
... />
μ μμ λ λ°μ΄ν°λ°μΈλ©μ κΈ°λ³Έμ μΈ μ¬μ©λ°©λ²μ΄λ€. μ½νλ¦°orμλ° μ½λμμ ν
μ€νΈλ₯Ό ν λΉνλκ² μλ XML νμΌμμ
ν
μ€νΈλ₯Ό ν λΉνλ€. ν λΉ ννμμΌλ‘ @{}
λ₯Ό μ¬μ©νλ€.
λ μ΄μμ νμΌ(XML) μμ ꡬμ±μμλ₯Ό κ²°ν©νλ©΄ μ‘ν°λΉν°λ νλκ·Έλ¨ΌνΈ λ΄μμμ UI κ΄λ ¨ νΈμΆμ μ€μΌ μ μμ΄ νμΌμ΄ λμ± λ¨μνλκ³ μ μ§κ΄λ¦¬ λν μ¬μμ§λ€. μ± μ±λ₯μ΄ ν₯μλλ©° λ©λͺ¨λ¦¬ λμ λ° NPE λ₯Ό λ°©μ§ ν μ μλ€.
μμνκΈ°
# build.gradle(:app)
android {
...
buildFeatures {
dataBinding true
}
}
# layout file
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewmodel"
type="com.myapp.data.ViewModel" />
</data>
<ConstraintLayout... /> <!-- UI layout's root element -->
</layout>
Last updated