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