Newer
Older
SmartKitchen / app / src / main / java / com / casic / br / adapter / OtherDeviceAdapter.kt
package com.casic.br.adapter

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.bumptech.glide.request.RequestOptions
import com.casic.br.R
import com.casic.br.extensions.diffDate
import com.casic.br.model.OtherDeviceModel
import com.casic.br.utils.LocaleConstant

/**
 * 汉威报警器Adapter
 * */
class OtherDeviceAdapter(
    private val context: Context,
    private val dataRows: MutableList<OtherDeviceModel.DataModel.RowsModel>
) : RecyclerView.Adapter<OtherDeviceAdapter.ItemViewHolder>() {

    private var layoutInflater: LayoutInflater = LayoutInflater.from(context)

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemViewHolder {
        return ItemViewHolder(
            layoutInflater.inflate(R.layout.item_other_device_rv_g, parent, false)
        )
    }

    override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
        val rowsModel = dataRows[position]
        holder.deviceNameView.text = rowsModel.deviceName
        Glide.with(context)
            .load(LocaleConstant.HW_JT_KBZ1)
            .apply(RequestOptions.circleCropTransform())
            .placeholder(R.mipmap.load_image_error)
            .into(holder.imageView)
        holder.deviceModelView.text = rowsModel.productCode
        holder.deviceUsedTimeView.text = String.format(
            "已使用${rowsModel.createTime.toString().diffDate(true)}天"
        )
        holder.rootView.setOnClickListener {
            clickListener?.onItemClick(position)
        }
        holder.moreOperateButton.setOnClickListener {
            clickListener?.onButtonClick(position)
        }
    }

    override fun getItemCount(): Int = dataRows.size

    private var clickListener: OnItemClickListener? = null

    interface OnItemClickListener {
        fun onItemClick(position: Int)

        fun onButtonClick(position: Int)
    }

    fun setOnItemClickListener(clickListener: OnItemClickListener?) {
        this.clickListener = clickListener
    }

    class ItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        val rootView: LinearLayout = itemView.findViewById(R.id.rootView)
        val deviceNameView: TextView = itemView.findViewById(R.id.deviceNameView)
        val moreOperateButton: Button = itemView.findViewById(R.id.moreOperateButton)
        val imageView: ImageView = itemView.findViewById(R.id.imageView)
        val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
        val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
    }
}