46
2015/07/08 What's New in Android @Gunosy (Data Binding)

例の縛るやつ(Data binding)

Embed Size (px)

Citation preview

2015/07/08 What's New in Android @Gunosy

(Data Binding)

Profile

釘宮 愼之介 / @kgmyshin

• Androidエンジニア • 福岡県福岡市南区野多目出身 • SHIROBAKO最高

たとえばこんなUserクラスをbindしてみたい

1. layoutタグで囲む

2. dataタグ内でuserオブジェクトを

宣言する

3. bindする!

あとはActivityなどで bindするUserオブジェクトをセットするだけ

このままだと、

Userオブジェクトの各メンバーの値が

変わってもViewの表示は変わらない。

Userクラスをこう書き換えるだけでOK

1. 継承

2. 対象に@Bindableを付与

3. 値が変わったらnotifyPropertyChanged!

activity_main.xml -> ActivityMainBinding view_item.xml -> ViewItemBinding a.xml -> ABidning

name=“user” -> setUser name=“adminUser” -> setAdminUser

さっきのをまるっと下記に置き換えても動く

メソッドでもフィールドでも良い

btnというid名にしたから、binding.btnでアクセスできる

(エラーは出るけど動く。。。。こういうのはたくさんある)

2. bind先のオブジェクト

3. onClickListenerにbind!

1. これ書く

app:onClickListener="@{activity.showToastListener}"のshowToastListenerを用意する

app:onClickListenerでも app:setOnClickListenerでも動く

たとえば、こんな風にcapTextというものを 作ってそこにtextをbindすると

大文字で表示されるようなことをしたい

大文字で表示されるようにしたい

こんなstaticメソッドを用意するだけ。

このメソッド、本当にどこに実装しても動いた。

複数同じメソッドがある場合は

先に見つかった方が使われるような動きをする。

itemsを用意する

layout側でbindする

Listをsetする

type=“List<Task>” だと動かない。