AndroidでDataBinding属性の書き方には規則性があるので、一覧表とかは不要でした

この記事をシェア

レイアウトXMLでexampleという属性をバインディングした場合、setExample()というメソッドが呼び出されます。

AndroidのDataBindingは非常に便利ですが、普段使わないUI要素を設定したくなった時に、XMLにどのように記述すればよいか迷うことが多いのではないでしょうか。このブログでも「BitmapをImageViewにbindingしたい」とか「DataBindingでViewの表示・非表示を切り替えたい」といった記事で個別のバインディング方法を紹介してきました。これらの記事へのアクセスが多いことからも、たくさんの人がDataBindingの書き方で迷っていることが分かります。

DataBindingできるプロパティやメソッドの一覧表とかあればいいのに・・・と思って調べてみると、実はDataBindingの記述方法はきちんとルールで決まっていました。それがこちら。

  • ViewのsetXxxxxというメソッド名からsetを取り除き、先頭を小文字にする。
  • XMLの名前空間は何でもよい。

例えば「BitmapをImageViewにbindingしたい」では、app:imageBitmap属性を使うと紹介しました。これは、ImageViewsetImageBitmap()というメソッドがあるから使えるのです。実は名前空間はapp:でもandroid:でも変わらないということなんですね。

「DataBindingで記述したいけどどうやって書けばいいかわからない!」という場合は、まずはAndroidデベロッパーでViewのメソッドを調べて、setXxxxというメソッドが見つかったら、上記のルールに従ってsetを取り除いて先頭を小文字にすればよいことになります。setXxxxxListener()のようなイベントリスナーの登録も同じルールが使えます。

一応公式のAndroidデベロッパーの記事も引用しておきましょう。

example という名前の属性の場合、ライブラリは引数として互換性のある型を受け入れる setExample(arg) メソッドを自動的に見つけようとします。メソッドの検索時には属性の名前空間は考慮されず、属性の名前と型のみが使用されます。

https://developer.android.com/topic/libraries/data-binding/binding-adapters?hl=ja#automatic-setting

DataBindingの書き方をググると、@BindingAdapterアノテーションを使って自分で定義する方法を紹介している記事をよく見ますが、まずはViewに適切なメソッドが用意されているかどうかを調べましょう。setXxxx()というメソッドがあれば、わざわざ自分で定義しなおす必要はありません。

この記事をシェア