Test
Oleg
abstract class BaseShortObjectDelegate(
context: Context,
private val moneyFormatter: Formatter<Long, String>,
private val itemClickHandler: (position: Int) -> Unit,
private val addToFavoritesClickHandler: (position: Int) -> Unit
) : BaseDelegate<BaseShortObjectDelegate.ViewHolder, ShortObject>(context) {
abstract val imagePlaceholder: Int
abstract fun getImageUrl(item: ShortObject): String
override fun onBindViewHolder(position: Int, item: ShortObject, holder: ViewHolder, payloads: MutableList<Any>) {
Glide.with(context)
.load(getImageUrl(item))
.centerCrop()
.dontAnimate()
.placeholder(imagePlaceholder)
.into(holder.headerBackgroundImageView)
holder.cityTitleTextView.text = item.cityTitle
holder.titleTextView.text = item.title
holder.priceTextView.text = moneyFormatter.format(item.price)
if (item.isFavorite) {
holder.startImageView.setImageResource(R.drawable.icon_star_active)
} else {
holder.startImageView.setImageResource(R.drawable.icon_star)
}
if (item.isVip) {
holder.vipTextView.makeVisible()
} else {
holder.vipTextView.makeGone()
}
holder.startImageView.setOnClickListener { addToFavoritesClickHandler.invoke(position) }
holder.rootView.setOnClickListener { itemClickHandler.invoke(position) }
}
override fun isForViewType(item: Any?): Boolean = item is ShortObject
abstract class ViewHolder(val rootView: View) : RecyclerView.ViewHolder(rootView) {
abstract val cityTitleTextView: TextView
abstract val titleTextView: TextView
abstract val priceTextView: TextView
abstract val headerBackgroundImageView: ImageView
abstract val startImageView: ImageView
abstract val vipTextView: TextView
open val oldPriceTextView: TextView? = null
}
}