Test

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
    }
}


Report Page