web-dev-qa-db-ja.com

Android:列挙型比較を使用したデータバインディング式

列挙型を使用してデータバインディング式を作成し、ビュー要素の可視性を制御することは可能ですか?私が達成したいのは以下です

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:orientation="vertical"
    Android:visibility="@{user.editType == EditType.EDIT_PROFIL ? View.VISIBLE : View.GONE}">

EditTypeクラスは非常にシンプルです

public enum EditType {
  NONE,
  EDIT_PROFIL,
  EDIT_ADDRESSES; }

XML内でこの列挙型を使用してLinearLayoutの可視性を制御できればすばらしいと思います。

誰かがこれを達成する方法を知っていますか?

19
jennymo

私にはあなたが達成したいことは可能であるように思えます、そしておそらくタグの欠如を除いて私は何も悪いことを見ていませんか?見えない...

<data>
 <import type="com.example.my.app.EditType"/>
</data>
30
Shohn

ロジックをUIから分離することをお勧めします。可視性のすべてのロジックはJava異なるイベントのコードで実行する必要があります。@ Demo_Mailのようなものは、Activity/FragmentのOnCreate()メソッドに実装されていれば機能するが、データバインディングタグは、実行中の任意の時点でこれを動的に実行することを示唆しています(Imが間違っている場合は修正してください)。その場合、実行されるOnClick()またはOnSelectItem()メソッドを作成することをお勧めしますユーザーが列挙型の値を選択したとき(comboBoxなど)このメソッドは、ビューの可視性を設定します。

0
Shohn