728x90
반응형
XML과 ViewModel이 서로 정의한 변수와 함수를 주고 받는 방식이다.
굉장히 선호하는 방식이고, 코드가 좀 더 간결하고 깨끗해진다.
총 두 가지 예시를 들 것이고,
토글 버튼(ToggleButton)과 일반 버튼(Button) UI를 사용할 것이다.
언어 : Kotlin
1. ToggleButton Binding
: 토글 버튼 클릭시 'isToggleChecked'데이터가 갱신되고,
: 'isToggleChecked'를 바라보고 있던 다른 UI가 즉시 갱신되도록 함
[코드 영역]
val isToggleChecked = MutableLiveData(false)
fun onCheckedChanged(isChecked: Boolean) {
isToggleChecked.value = isChecked
}
[레이아웃 영역]
<layout>
<data>
<!--VISIBLE용도-->
<import type="android.view.View" />
<!--Gravity용도-->
<import type="android.view.Gravity" />
<variable
name="vm"
type="kr.co.cavedwellers.testpackage.viewmodels.MainViewModel"/>
</data>
...
<ImageView
android:visibility="@{vm.isToggleChecked ? View.GONE : View.VISIBLE}" />
<ToggleButton
android:onCheckedChanged="@{(buttonView, isChecked) -> vm.onCheckedChanged(isChecked)}" />
</layout>
2. Button - Background Image Binding
: 일반 Button이 클릭 기능도 가능하고,
: 이미지 변수의 값이 달라지면 Background이미지가 달라지도록 함
[코드 영역]
val baseLineMenu = MutableLiveData<Drawable>()
init {
baseLineMenu.postValue(ContextCompat.getDrawable(context, ..., ...))
}
fun settingDialog() {
...
}
[레이아웃 영역]
<layout>
...
<button
android:background="@{vm.baseLineMenu}"
android:onClickListener="@{() -> vm.onSettingDialog()}"
</layout>
728x90
반응형
'dev > aos' 카테고리의 다른 글
[AOS] 다른 화면 띄우기 (Activity) (2) | 2023.10.26 |
---|---|
[AOS] 웹뷰 WebView Guide (0) | 2023.10.23 |
[AOS] 라이브러리(Library) 추가 방법 (0) | 2023.10.15 |
[AOS] ViewModel 생성하기 (0) | 2023.10.14 |
[AOS] Permission 권한 요청 및 획득 (0) | 2023.10.14 |