前置き。まだ調査段階でのメモです。
表題のepoxyのRecyclerViewでglideを使った画像読み込みをやろうとsampleをベースに自分で作成しましたが、どうしても画像が表示されず、、、
1日悩んで修正はできたのですが、結論は導けずw
ですので不本意ながら、検索しても情報が少なかったのでやったことだけ記載します。
- ImageModelにあたるモデルのクラス名を変更
- package-info.javaでEpoxyDataBindingLayoutsを利用
- 自動のDataBindingをやめた
これで表示されるよになりました。
上記で修正されたので、ここから推測したのは
元々入っていたDataBindingとepoxyで自動生成するモデルのバインディングが競合してしまっていた。
です。
EpoxyのSampleモデルImageModelはこんな感じ
@EpoxyModelClass(layout = R.layout.list_item)
abstract class ImageModel : EpoxyModelWithHolder<ImageHolder>() {
@EpoxyAttribute
lateinit var imageUrl: String
@EpoxyAttribute
lateinit var text: String
@EpoxyAttribute
var preloading: Boolean = false
override fun bind(holder: ImageHolder) {
holder.glide.loadImage(imageUrl, preloading).into(holder.image)
holder.text.text = text
}
override fun unbind(holder: ImageHolder) {
holder.glide.clear(holder.image)
holder.image.setImageDrawable(null)
}
}
class ImageHolder : KotlinHolder(), Preloadable {
val image by bind<ImageView>(R.id.image_view)
val text by bind<TextView>(R.id.text_view)
val glide by lazy { Glide.with(image.context) }
override val viewsToPreload by lazy { listOf(image) }
}
結局、最終的にはpackage-info.javaでモデルの自動生成の記述をなくしました。なにげにsampleにもなかったのですw。
あ、別問題ですが、package-info.javaを作成したときにコピペを利用しないと認識してくれないことがありました、、、なんでしょうこれ???