slontが2016年10月1日に投稿(2016年10月2日更新)

AndroidStudio2.1から、DataBindingにて待望の双方向バインディングが簡単に実装可能になりましたね。



双方向バインディング(2-Way Binding)

従来のViewModel -> Viewは以下のような記述でした。

<EditText  
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@{info.name}"
    android:textAppearance="?android:attr/textAppearanceMedium"/>

これを、以下ように記述するだけでViewModel <-> Viewが実現します。

<EditText  
    android:id="@+id/editText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@={info.name}"
    android:textAppearance="?android:attr/textAppearanceMedium"/>

android:text="@={info.name}"のように=を挿入するだけです。


ビルドエラーの対処

ところが、上記の記述だとNo resource type specified (at 'text' with value '@={obj.value}').というエラーでビルドが通らない場合があります。

これは、以下のように設定ファイルを編集すると直る可能性があります。

// 以下をコメントアウト
// classpath "com.android.databinding:dataBinder:1.0-rc4"
// 以下をコメントアウト
// apply plugin: 'com.android.databinding'

// 以下を追加
android {  
    ...
    dataBinding.enabled = true
}

色々試しましたが、自分はこれでいけました。ハマっている人は参考までに。


まとめ

バグ?

↑気に入ったらシェアしてね↑
プロフィール
slont

slont

元金融エンジニア。メイン言語はJava, HTML, JavaScript, Python, Kotlinあたり。SECCONやCTF、NLP、機械学習に興味あり。金融日記購読4年。巷で話題の変態紳士。美女ソムリエ始めてました。 お仕事の依頼はTwitterからお願いします。

comments powered by Disqus
Back to top