私はrecyclerviewにアイテムを表示し、databindingを使用しています。 XMLレイアウトでは、次のようなビューがあります。
<include
Android:visibility="@{viewmodel.expandable ? View.VISIBLE : View.GONE}"
bind:viewmodel="@{viewmodel}"
layout="@layout/full_station_layout"/>
それはうまく機能しますが、私には1つの問題があります。recyclerviewが項目を初期化してビューにバインドしている間、このレイアウトは画面上で1回点滅しますが、初期値viewmodel.expandableはfalseです。そこで、このレイアウトを一時的に非表示にすることを決定し、次のようにxmlでdefault-parameterを使用してみました。
<include
Android:visibility="@{viewmodel.expandable ? View.VISIBLE : View.GONE, default=View.GONE}"
bind:viewmodel="@{viewmodel}"
layout="@layout/full_station_layout"/>
しかし、何かがうまくいかなかった:
error: 'View' is incompatible with attribute Android:visibility (attr) enum [gone=2, invisible=1, visible=0].
したがって、またはこのパラメーターを誤って使用するか、Googleがこのキーワードをxmlデータバインディングルールから削除します(使用例default-keywordをGoogle開発者のxmlで以前に見たことがありますが、今はできません)。
gone
プロパティにvisible
、invisible
、default
を設定できます。以下と交換してください。
<include
Android:visibility="@{viewmodel.expandable ? View.VISIBLE : View.GONE, default=gone}"
bind:viewmodel="@{viewmodel}"
layout="@layout/full_station_layout"/>
Viewクラスをすでにインポートしているかどうかを確認します。
<data>
<import type="Android.view.View"/>
<variable ..... />
</data>
また、可視性のデフォルト値のデフォルトの正しい構文はdefault=gone
、なしdefault=View.GONE