10
ViewHolder Generator ListView/ViewHolderのベストプラクティスを考えてみた #potatotips 2014/2/12 @__gfx__ Wednesday, February 12, 14

Generationg ViewHolder pattern with Gradle

Embed Size (px)

Citation preview

Page 1: Generationg ViewHolder pattern with Gradle

ViewHolderGenerator

ListView/ViewHolderのベストプラクティスを考えてみた

#potatotips 2014/2/12@__gfx__

Wednesday, February 12, 14

Page 2: Generationg ViewHolder pattern with Gradle

ListViewのセルのView

長年の経験からViewHolder patternというものが編み出された

しかし依然として面倒くさい…

cf. No more 手書きViewHolder (by @sys1yagi)

http://www.slideshare.net/bs_yagi/potato01-no-more-viewholder

Wednesday, February 12, 14

Page 3: Generationg ViewHolder pattern with Gradle

ViewHolderパターン

<View android:id=”@+id/name” /> から

`View name;` を作る

基本的には固定パターン

それゆえにIDEによる自動生成するプラグインもうまれた

Wednesday, February 12, 14

Page 4: Generationg ViewHolder pattern with Gradle

コードは生成しよう

固定パターンの変換は自動的

自動的に生成できるものは機械にまかせよう

ビルド時にlayout/*.xmlを調べて対応するViewHolderクラスを生成すればいいのでは?

Wednesday, February 12, 14

Page 5: Generationg ViewHolder pattern with Gradle

CodeModel

CodeModelというライブラリでJavaのソースコードを生成できる

明らかなcompile errorはコード生成時に検出してくれるので便利

インデントも勝手にやってくれるので便利

Wednesday, February 12, 14

Page 6: Generationg ViewHolder pattern with Gradle

コード生成のベストプラクティス

自動生成したコードを更に編集してはいけない

自動生成したコードは独立したファイルにおく

Wednesday, February 12, 14

Page 7: Generationg ViewHolder pattern with Gradle

PROBLEMS

重複したandroid:idがフィールド名に展開されてerror

android:id=”@+id/android:list”

<include ... />

custom Viewの名前空間解決…

Wednesday, February 12, 14

Page 8: Generationg ViewHolder pattern with Gradle

Gradle Plugin

Groovyクラスとして実装する

Android Projectのgradle pluginがまだなさそうで、で作法がよくわからない

ベストプラクティス模索中

Wednesday, February 12, 14

Page 9: Generationg ViewHolder pattern with Gradle

デモ

Wednesday, February 12, 14

Page 10: Generationg ViewHolder pattern with Gradle

Generator

完成しなかった…(´;ω;`)

できたらOSSとして githbub.com/cookpad で公開します!!!

Wednesday, February 12, 14