Epoxy 사용법이 여러개가 있던데..
이것들 차이점을 잘모르겠습니다...
@EpoxyModelClass(layout = R.layout.singlefood_layout)
abstract class SingleFoodModel :
EpoxyModelWithHolder<SingleFoodModel.FoodHolder>(){
@EpoxyAttribute
var id : Long = 0
@EpoxyAttribute
@DrawableRes
var image : Int = 0
@EpoxyAttribute
var title:String? = ""
@EpoxyAttribute
var desc:String = ""
override fun bind(holder: FoodHolder) {
holder.imageView?.setImageResource(image)
holder.titleView?.text = title
}
-----------------------------------------
//방법 1
inner class FoodHolder : EpoxyHolder(){
lateinit var imageView:ImageView
lateinit var titleView: TextView
lateinit var descView:TextView
override fun bindView(itemView: View?) {
imageView = itemView?.image
titleView = itemView?.title
descView = itemView?.desc
}
}
-----------------------------------------
//방법 2
//다른 방법입니다. KotlinHolder를 사용하면 다음을 따르면 됩니다.
inner class ItemsHolder : KotlinHolder() {
val imageView by bind<TextView>(해당 컴포넌트의 id R.id.imageView)
val titleView by bind<TextView>(R.id.titleView)
val descView by bind<TextView>(R.id.descView)
}
------------------------------------------
}
이 모델 클래스 내의 Holder 클래스에서 1번 방법이 대체로 사용하는 방법같은데..
어떤 블로그에서 보니 findViewById를 사용을 안하더라구요. 그런데 제가 사용하기위해 다른 블로그 같은곳
을 봤을때는 또 사용을 하는곳이 있더라구요, 아니면 방법 2처럼 KotlinEpoxyHolder로 변경해서 쓰거나..
제가 왜 findViewById 사용 여부를 물어보냐면..
https://youtu.be/Ce-CPNdOAsI
이 영상에서 모델클래스로 ViewBindingKotlinModel 이라고
Epoxy 의 깃(epoxy/ViewBindingKotlinModel.kt at master · airbnb/epoxy (github.com))에서 해당 helper 클래스의 파일을 직접 만들어 코드 복사후 사용하는데, 이건 이름에서도 나와있듯이
레이아웃파일을 바로 ViewBinding해서 사용하기 위한것같은데요..
이것때문에 findViewByID를 사용하는지 안하는지 여쭈어보는겁니다..
위의 방법1번도 마찬가지로 ViewBinding을 가능케한다면, 영상과 링크의 방법은 전혀 필요없는
부분아닌가요/
아니면 무슨 특별한 차이점이 있나요?