ViewModelオブジェクトで宣言されたブール型プロパティをxmlに接続して、ビューの露出を制御しましょう。
ViewModelで露出を制御するプロパティを宣言します。
ビューの初期状態を公開しないようにするには、プロパティ値をfalseに設定します。
private val _emptyLayoutVisible = MutableLiveData(false)
val emptyLayoutVisible: LiveData<Boolean>
get() = _emptyLayoutVisible
ViewModelで宣言されたプロパティ値を使用することにより、xmlの可視性プロパティが条件ステートメントとして処理されます。
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:visibility="@{viewmodel.emptyLayoutVisible ? View.VISIBLE : View.GONE}"
tools:visibility="gone">
...
</ConstraintLayout>
ViewModelで宣言されたプロパティが変更されると、xmlのvisibilityプロパティも変更されます。
以下のコードでは、itemsリストが空またはnullの場合はtrueの値が格納され、itemsリストが空でない場合はfalseの値が格納されます。
_emptyLayoutVisible.value = _items.value?.isEmpty() ?: true