dev/aos

[AOS] DataBinding XML이벤트 주고 받기

캄춰 2023. 10. 18. 11:02
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