読者です 読者をやめる 読者になる 読者になる

どくぴーの備忘録

真面目なことを書こうとするクソメガネのブログ。いつ投げ捨てられるのかは不明

DataBindingについて + 高専カンファレンス100 in 東京 #kosenconf で発表してきました + 感想

この記事は KobeUniv Advent Calendar 19日目の記事も兼ねています

高専カンファレンス100 in 東京,100カンファに行ってきました.そこで(毒にも薬にもならない)Androidの発表をしてきました.

www.slideshare.net

どんな内容だったの

いろいろとAndroid開発を楽にできたらいいなと,そういうことで設定いじったりライブラリ使ってみたりとそんな内容です.

補足

「ButterKnife使うんならDataBinding使えば良いんじゃね?」的なことをカレーメシ先輩( @c_bata_, id:nwpct1 )に聞かれたので,一応DataBindingについても解説します.

DataBinding?

Google I/O 2015で「つけるよ!」って言われた機能.XMLjavaコードを静的ないしは動的に結合してくれます.

雑な使い方例

とりあえずは,app/build.gradleに次の記述を追加しましょう.

app/build.gradle

User.java

こんな感じに普通のPOJOなクラスをBaseObservableのサブクラスにして,getterに @Binding アノテーションをつけます.そんでsetterには notifyPropertyChanged(BR.hoge) で,変更を伝えるようにしてみます.

activity_main.xml

activity_main.xmlは,まず, <layout> タグで囲んでから, <data> で宣言を行います.この時の name 属性をMainActivity.javaで使います.その後に表示するLayoutを書きますが, android:text=@{user.firstName} の様に代入したい値を書き入れます.この時,prefixとかのmは消して先頭は小文字にします.ちなみに使えるのは参照元のクラスがpublicなメンバかgetterが存在する時です. app:onClickListener="@{activity.buttonClickListener}" の様に,Activity等に書いたリスナも代入出来たりします.便利.

MainActivity.java

MainActivityでは onCreate 内で ActivityMainBindingインスタンスを立てます.クラス名はXMLのファイル名のキャメルケースになってますね.XMLが正しければ name に書いた要素に対して binding.setUser() などのメソッドができているので,ここに代入します.MainActivityを書いた時点でこのままコードを走らせると mUser に格納した変数が setText() もしてないのに表示されてますね.ついでに app:onClickListener="@{activity.buttonClickListener}" で設定したメソッドOnClickListenerインスタンスを返すようにすると,ちゃんとリスナが実行されます.ここでは mUser.setLastName() で名前を変更しているだけですが,ちゃんと notifyPropertyChanged(BR.hoge) してあるので,変更がViewに反映されます.

細かいことは

[Android] – Data Bindingつかってみた
tech.recruit-mp.co.jp

こちらの記事に非常によくまとまっているので,こちらを参照するといいかと思います.

感想

初めて高専カンファで発表しましたが,とても良かったなと思ったりしてます.最初は「誰も来ないんだろうなーこわいなー」とか思ってたらちゃんと10人以上来てくれたり,ポジティブな反応してくれていた人も居たので,ありがたい限りです.ただもっとぶっ飛んだ内容にしても良かったかな…なんて.

カンファ自体もとても楽しかったです.基調講演に始まり,アイスブレイク,夢これ,懇親会,複数トラック(B102にしか居なかった),一般発表,LTと,充実のプログラムだったと思います.運営,発表者の方々には頭が上がりません.ありがとうございました.(発表上手い人ばっかで正直泣きそうになりました.)ちなみに夢これボードなる,夢を貼り付けまくるホワイトボードがあったのですが,5分くらい考えて「夢を探す」などと書きました.

あと,初日の夜にでなり( @denari01, id:denari01 )カレーメシ先輩( @c_bata_, id:nwpct1 ),ルータ芸人( @puhitaku, id:puhitaku )らと調布で飲んでました.いろいろあって行く店が大体潰れていて「調布って競争激しいんだな」とか言いながらどうやら電通大生の間では「DJ」などと言われているさかなや道場で「調布ビール最高」などと言ってました.くっそ楽しかったです.

補足書いてて感想書くこと忘れてしまった(☝ ՞ਊ ՞)☝

おわりに

実行委員の方々,本当にお疲れ様でした,ありがとうございました.発表者,参加者の方々もお疲れ様でした.今度は近畿圏でlolカンファがあるみたいなので,そこでもっと変な発表が出来そうならしてみたいと思います.

おまけ

クソアプリ Advent Calendar でつくったすらこん!をアップデートしたので,今回使って見ました.どうやら動きはなかなか良いみたいなので満足です.ついでに らりょすくん ( @raryosu, id:raryosu )にも貸しt…もとい,押し付けてみたところ,ちゃんと動いてました.どうやら大丈夫そうですね.