๐จ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์์๋ ๋ทฐ๋ฐ์ธ๋ฉ๊ณผ ๋ค๋ฅด๊ฒ ๋ ์ด์์ xml ํ์ผ์ ์ต์์ ์์์ธ root๊ฐ <layout>
์ด์ด์ผ๋ง ๋ฐ์ธ๋ฉ ํด๋์ค๊ฐ ๋ง๋ค์ด์ง
์ด๋, <layout>
์ view๊ฐ ์๋ ๊ฐ์ฒด
<layout>
์ ๋ ๊ฐ์ง ์์ญ์ผ๋ก ๋๋จ
โ <data>
์์๋ ๋ ์ด์์๋ทฐ์ ๋ฐ์ธ๋ฉ์ ํ ๋ฐ์ดํฐ ๋ณ์๋ฅผ ์ ์ธํ๋ ์์ญ
โ Layout View
Viewgroup, ํ๋ฉด์ ๋ณด์ฌ์ง ๋ทฐ๊ฐ ๋์ผ ์๋ฆฌ
TextView์๋ Intํ ๊ฐ์ ์ค ์๊ฐ ์์,
String.valueOf()
์ด์ฉํ์ฌ ์๋ฃํ ๋ณํ
๊ธฐ์กด์ ๋ฒํผ์ด ๋๋ฆฌ๋์ง ์ฒดํฌํ๋ ๋ฆฌ์ค๋๋ฅผ ๋ฌ์์ ๋ฒํผ์ด ๋๋ฆฌ๋ฉด ๋ณด์ฌ์ฃผ๋ ๊ฐ์ ๋ฐ๊ฟจ์ง๋ง, ๋ฒํผ ํด๋ฆญ์ ๋ฐ๋ก ๋ฐ์ํ์ฌ ๋ณ์์์ฒด๋ฅผ ๋ณ๊ฒฝ
but, ๋ณ์๊ฐ ๋ฐ๋๋๋ง๋ค ํ๋ฉด์ ๊ฐฑ์ ํ ์๋ ์์ผ๋ฏ๋ก ๊ฐ๋ณ๊ฒฝ์ด ๊ด์ฐฐ๋๋ ๋ฉค๋ฒ๋ณ์๋ฅผ ๋ง๋ค์ด ์ฌ์ฉ ObservableXXX
var age: ObservableInt= ObservableInt(0)
Observable๊ฐ์ฒด๋ โ primitive type โก List or Map โข Reference type --> ObservableField<> ํํ๋ก ์ฌ์ฉ๊ฐ๋ฅ
๋ฐ๋ผ์ String์ ๊ฒฝ์ฐ ๊ธฐ๋ณธํ์ด ์๋๋ฏ๋ก ObservableField<String>
์ผ๋ก ์ฌ์ฉ
xml์ ์๋ ๋ฒํผ์ ํด๋ฆญ์ด๋ฒคํธ์ ๋ฐ์ํ๊ธฐ์ํ์ฌ ๋ฐ์ดํฐ ํด๋์ค์ ๋ฉ์๋ ์์ฑ
โ callback method๋ก ์์ฑ
ํด๋ฆญ์ ์ฝ๋ฐฑ ๋ฉ์๋๊ฐ ๋๋ ค๋ฉด ๋ฐ๋์ ํ๋ผ๋ฏธํฐ๊ฐ ์์ด์ผ ํจ
fun changeName(view:View) {
name.set("Robin")
}
โ ์ผ๋ฐ ๋ฉ์๋๋ก ์์ฑํ๊ณ xml์์ ์ต๋ช ์ฝ๋ฐฑํจ์๋ก ํธ์ถ
fun toggleFavor() {
favor.set(!favor.get())
}
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="@{(v)->user.toggleFavor()}"/>
xml์ onClick ์์์ ํจ์ function์ ๋ง๋ค ์ ์์ง๋ง, ๋๋ค์์ ๊ฐ๋ฅ
์ด๋ฅผ ์ด์ฉํ์ฌ ์ต๋ช
์ ์ฝ๋ฐฑํจ์๋ฅผ ๋ง๋ค์ด ๋ฐ์ดํฐ ํด๋์ค์ ํจ์ ํธ์ถ