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

import android.annotation.SuppressLint
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.casic.br.R
import com.casic.br.model.AddedDeviceModel
import com.pengxh.kt.lite.extensions.dp2px
import com.pengxh.kt.lite.extensions.obtainScreenWidth

@SuppressLint("NotifyDataSetChanged")
class AddedDeviceAdapter(
    private val context: Context, private val spacing: Float
) : RecyclerView.Adapter<AddedDeviceAdapter.ItemViewHolder>() {

    private var layoutInflater: LayoutInflater = LayoutInflater.from(context)
    private val screenWidth = context.obtainScreenWidth()
    private var dataRows: MutableList<AddedDeviceModel> = ArrayList()

    fun setupDevice(devices: MutableList<AddedDeviceModel>) {
        dataRows = devices
        notifyDataSetChanged()
    }

    fun deleteDevice(position: Int) {
        if (dataRows.isNotEmpty()) {
            dataRows.removeAt(position)
            notifyDataSetChanged()
        }
    }

    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 {
            holder.deviceNameView.text = dataRows[position].deviceName
            holder.deviceModelView.text = dataRows[position].deviceModel
            holder.deviceUsedTimeView.text = dataRows[position].deviceUsedTime
            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)
    }
}