관리 메뉴

꿀맛코딩

How to set default value of android databinding (안드로이드 데이터 바인딩 기본 값 설정 하는 방법 본문

공부방/Android

How to set default value of android databinding (안드로이드 데이터 바인딩 기본 값 설정 하는 방법

soycrab 2021. 6. 30. 13:27

안드로이드 데이터 바인딩을 사용하다 보면

라이브 데이터를 세팅하기 전까지

xml에 라이브 데이터를 바라보는

뷰가 감춰져야 하거나

특정 디폴트 상태를 유지해야 할 때 난감할 때가 있습니다.

만약 이를 막고자 라이브 데이터에

디폴트 값을 미리 넣어두면

옵저빙 시 호출이 되기 때문에

디폴트 값을 넣어주기도 애매하죠

아래 코드를 예시로 보겠습니다.

<View android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="@{vm.isShow() ? View.VISIBLE : View.GONE}"/>

만약 ViewModel의 isShow 데이터를 바라보고

Visible과 Gone을 처리하는 뷰가 있다고 하면

이 뷰는 isShow의 데이터가 변경되기 전까지 화면에 보이고 있을 것입니다.

API를 통신하여 세팅한다고 하면

API의 통신 속도에 따라 나타나고 사라지는 게 눈에 보일 정도가 될 것입니다.

이럴 경우 크게 눈에 띄지 않는 뷰면 상관이 없는데

전체적으로 화면을 덮는 다던가 크게 화면을 차지하는 뷰라면 이야기는 달라집니다.

따라서 이를 막고자 Databinding시 뷰에 디폴트 값을 넣어줄 수 있습니다.

아래 예시 코드를 확인해 보겠습니다.

<View android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="@{vm.isShow() ? View.VISIBLE : View.GONE , default=gone}"/>

디폴트 값을 지정하는 핵심 코드는 아래 빨간색 코드입니다.

android:visibility="@{vm.isShow() ? View.VISIBLE : View.GONE , default=gone}"

위처럼 디폴트 값을 지정하면

데이터 바인딩 시점에 라이브 데이터에 값이 없거나 변경되지 않아도

뷰의 기본 상태 값을 지정할 수 있습니다.

visibility 는 위와 같이 디폴트 값을 지정할 수 있고

다른 예로

TextView 같은 경우는

default=`테스트 문구입니다.`

이런 식으로도 디폴트 값 지정이 가능합니다.

모두 즐거운 코딩 하세요

반응형
Comments