DataBindingCodelab前編:静的なデータをbindingしてみる

こんにちは、DataのBindingしてますか?

saikiです。

ということで今日はDataBindingに入門するためにコードラボをやってたんですが、割と重要なことを言っているような気がしたので前半の大事そうなとこを日本語で抜き出してみました。

英語不得意マンなので間違っている可能性は大いにありますのでご注意ください。

本家はここ

1. Introduction

DataBindingLibralyはDataのUIへのBindをプログラムではなく宣言的にできるようにしてくれるよ。

staticなデータとobservableなデータ両方に使える。

observableなデータとはつまるところ、データが更新されるとUIも自動で更新されるということだよ。

データはViewModelから提供される。MVVMはDataBindingと相性のいいpresentation layou バターンだ。

もしAndroidArchitectureのViewModelをよく知らないなら公式のドキュメントをチェックしてくれ。official documentation

簡単にいうとactivityやfragmentにデータを供給するためのクラスで、回転しても死なずにacts as an interface to the rest of the layers in your app.(なんて言ってるかわかりませんでした、誰か教えてください)

2. Try out the app without Data Binding

DataBindingを使っていないアプリにはいくつか問題がある。

  • findViewByIdを何度も呼んでいるので遅い。その上conpile timeにチェックされないので安全じゃない。もし間違ったIDを渡していたらクラッシュするよね。
  • onCreateでViewの初期化を行っている。自動でやってくれた方がいいよね。
  • layoutでandroid:onClick属性を使っているからこれも安全じゃない。onLikeメソッドがActivityになければクラッシュするよね。
  • コード量が多い。ActivityとFragmentはすぐ肥大化しがちだから出来るだけ外に移動させておきたいよね。あと、ActivityとFragmentのコードはテストもメンテナンスもしずらい。(全くである)

このすべての問題を解決できるよ。そう、DataBindingならね。(こんな描かれ方はしていない)ロジックをActivityの外側、再利用できてよりテストが簡単なところへ移動するのさ。(最高)

3. Enable Data Binding and convert the layout

まずDataBindingを使いたいModuleでLibらlyをenableにするのを忘れないでね。

普通のレイアウトをデータバインディングレイアウトに変換するには以下の操作が必要だ:

  1. layoutを<layout>タグで囲む
  2. レイアウト変数を追加(任意)
  3. レイアウト式を追加(任意)

AndroidStudioならoptoinエンターから簡単にlayoutタグを追加できる。

<data>タグのなかにlayout variablesを置く。

layout variablesはlayout expression(レイアウト式)を書くのに使われる。

@{式}って感じで書けて、割となんでもできるくらい強いんだけどあんまり複雑すぎると他の人が意味わかんなくなるから勘弁してくれよな。

詳しい書き方はここをみよう

https://developer.android.com/topic/libraries/data-binding/expressions#expression_language

レッツバインディング!

4. Create your first layout expression

<data>タグの中にStringのlayout variables を定義してみよう。

stringならandroid:textにそのまま入れられる。

 5. Change inflation and remove UI calls from activity

onCreateのsetContentViewを以下のように変更する

なぜ変数を作るのかというと、<data>ブロックに定義したlayout variablesをセットするのに使うからだよ。

あとはただセットするだけ

これでIDを探す処理を省ける。

=====================================

はいということでCodeLabo前半の大事そうなところだけでした。

ここからViewModel&LiveDataで使う話になります。

本筋って感じ。

ではまた。

自己紹介
Android開発エンジニアです。
kotlinがお気に入り。

 

おすすめ

Udemyのビデオ講座は本当に捗るので学習にとてもおすすめです。まじで。


スポンサーリンク

コメントをどうぞ

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください