いつもわからなくなって過去のコードを掘り出してくることになるので備忘録
- 論理積を使う
android:visibility="@{hogeFrag!=null && hogeFrag.isGotResult ? View.GONE : View.VISIBLE}"
- 論理和を使う
android:text="@{HogeClass.canStart() || HogeClass.isFinished() ? "push for start" : null}"
- 3項演算子を使う
android:text="@{HogeClass.isStarted() ? "isStarted" : null}"
-
文字列の一部を実行時に値を決める。+ 他の文字列を再利用する。
- values/strings.xml
%1$d枚目%2$s色
赤
```
-
layout/hoge_layout.xml
(中略)
android:text='@{@string/pages(data.pageNo,@string/red)}'
(以下略)
```
->「3枚目赤色」「5枚目赤色」のように実行時に値を変更可能したり、他の文字列を再利用したりできる。
- 文字列の結合
android:text='@{ @string/month + @string/day }'
- android SDKのクラスや自作クラスをimportする(staticな値やメゾッドの使用のため)
<data>
<import type="android.view.View"/>
<import type="com.user.hoge.HogeClass"/>
</data>
- 自作クラスのデータを宣言する
<data>
<variable
name="hogeFrag"
type="com.user.hoge.HogeFragment"
/>
</data>
- int型で自作クラスを介して渡した変数をString型にする
android:text='@{ String.valueOf(data.price) }'
- DataBindingとは直接関係ないが、string.xml内の文字列に「"」を含めたいとき(ハマって時間溶かしてしまったので)
<string name="hoge">\"</string>
-> 「"」だと、android studio上のpreviewだと「"」とちゃんと表示されるが、実機だと無視されて何も表示されないので注意
(参考:https://qiita.com/kazuhidet/items/7866ec0ce3e8b0fccf60)