안드로이드 데이터 바인딩을 사용하다 보면
라이브 데이터를 세팅하기 전까지
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=`테스트 문구입니다.`
이런 식으로도 디폴트 값 지정이 가능합니다.
모두 즐거운 코딩 하세요
'공부방 > Android' 카테고리의 다른 글
행복한 코딩을 위하여!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!