Android 双方向データバインディングの落とし穴

MVVM の文脈なんかでよくデータバインディングが出てきますよね。

ViewModel から UI (もしくはその逆)へのデータバインドしか行わない場合は 単方向データバインディング、それに加えて UI から ViewModel へのデータバインドも行う場合は 双方向データバインディング と言ったりします。

今回は、Android アプリ開発の双方向データバインディングで1時間ほど落とし穴にハマっていたのでその備忘録です。(Android アプリ開発におけるデータバインディングの詳しいやり方は省略します。)

単方向データバインディング

単方向の場合はレイアウトファイルに以下のように記述します。

<TextView
    ...(略)...
    android:text="@{viewModel.myText}"
    ...(略)...
    />

@ に続く {} の中にバインドしたいプロパティを書きます。

双方向データバインディング

これが双方向の場合はこうなります。

<EditText
    ...(略)...
    android:text="@={viewModel.myText}"
    ...(略)...
    />

@ の後、= が入ってから {} ですね。

てっきり単方向の場合と同じ記述だと思っていたのでハマってしまいました・・・

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です