Epoxy(4.0.0-beta6) : package-info.java作成時にハマった話
Epoxy (4.0.0-beta6) でpackage-info.javaを作成時にハマった話
何があったか
※実装を見ていったりはしないです。ご注意ください。
この度初めてEpoxyを使ってRecyclerViewの実装をしていました。
Epoxyを使っていく中でpackage-info.java
を作成する過程があります。
READMEを参考に実装を進めていくと...
package-info.java
@EpoxyDataBindingLayouts({R.layout.header_view, ... // other layouts }) package com.airbnb.epoxy.sample; import com.airbnb.epoxy.EpoxyDataBindingLayouts; import com.airbnb.epoxy.R;
こちらを記述しなさいとのことですが、以下のようなエラーが出力されます。
エラー: 注釈型はこの種類の宣言に使用できません @EpoxyDataBindingLayouts({R.layout.header_view, ... // other layouts})
どのように解決するか
Breaking!
The annotation that support databinding, EpoxyDataBindingLayouts and EpoxyDataBindingPattern, must now be placed on a class or interface instead of in a package-info.java file. The interface or class must be in Java, Kotlin is not supported. This is necessary to support incremental processing.
とのことで
EpoxyDataBindingLayouts
や EpoxyDataBindingPattern
は
package-info.java
の代わりにclassやinterfaceに記述しろとのことでした。
Kotlinはサポートされておらず、Javaのみだそうです。
package com.example.app; import com.airbnb.epoxy.EpoxyDataBindingLayouts; import com.airbnb.epoxy.EpoxyDataBindingPattern; @EpoxyDataBindingPattern(rClass = R.class, layoutPrefix = "my_view_prefix") @EpoxyDataBindingLayouts({R.layout.header_view, ... // other layouts}) interface EpoxyDataBindingConfig {}
公式にも記述されている通り、このように記述してあげるとうまく動きます。
おわりに
Epoxyを使ってみようとした時に、この壁に当たってしまってかなり時間を取られてしまいました。 困ったらReleaseNoteを読んでみるというのもありだなと勉強になりました。
やっとEpoxyを使った実装に入っていけそうです!!