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 @SuppressLint("NotifyDataSetChanged") class AddedDeviceAdapter(private val context: Context) : RecyclerView.Adapter<AddedDeviceAdapter.ItemViewHolder>() { private var layoutInflater: LayoutInflater = LayoutInflater.from(context) 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) } }