Newer
Older
SmartKitchenTablet / app / src / main / java / com / casic / br / adapter / AddedDeviceAdapter.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.extensions.toChineseTypeName
import com.pengxh.kt.lite.extensions.dp2px
import com.tuya.smart.sdk.bean.DeviceBean

class AddedDeviceAdapter(
    private val context: Context, private val dataRows: MutableList<DeviceBean>
) : RecyclerView.Adapter<AddedDeviceAdapter.ItemViewHolder>() {

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

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

    override fun onBindViewHolder(holder: ItemViewHolder, position: Int) {
        if (position == itemCount - 1) {
            holder.deviceNameView.text = "添加设备"
            holder.moreOperateButton.visibility = View.GONE

            holder.imageView.setImageResource(R.drawable.ic_add_device)
            if (holder.imageView.layoutParams is ViewGroup.MarginLayoutParams) {
                val params = holder.imageView.layoutParams as ViewGroup.MarginLayoutParams
                params.setMargins(0, 3f.dp2px(context), 0, 0)
                holder.imageView.requestLayout()
            }
            holder.imageView.layoutParams.width = 40f.dp2px(context)
            holder.imageView.layoutParams.height = 40f.dp2px(context)

            holder.tempLayout.visibility = View.GONE
            holder.imageView.setOnClickListener { //添加图片
                clickListener?.onAddDeviceClick()
            }
        } else {
            val rowsModel = dataRows[position]
            holder.deviceNameView.text = rowsModel.toChineseTypeName()
            Glide.with(context)
                .load(rowsModel.iconUrl)
                .apply(RequestOptions.circleCropTransform())
                .placeholder(R.mipmap.load_image_error)
                .into(holder.imageView)
            holder.deviceModelView.text = rowsModel.name
            holder.deviceUsedTimeView.text = String.format(
                "已使用${rowsModel.time.toString().diffDate(false)}天"
            )
            holder.rootView.setOnClickListener {
                clickListener?.onItemClick(position)
            }
            holder.moreOperateButton.setOnClickListener {
                clickListener?.onButtonClick(position)
            }
        }
    }

    override fun getItemCount(): Int = dataRows.size + 1

    private var clickListener: OnItemClickListener? = null

    interface OnItemClickListener {
        fun onAddDeviceClick()

        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 tempLayout: LinearLayout = itemView.findViewById(R.id.tempLayout)
        val deviceModelView: TextView = itemView.findViewById(R.id.deviceModelView)
        val deviceUsedTimeView: TextView = itemView.findViewById(R.id.deviceUsedTimeView)
    }
}