package com.casic.endoscope.adapter import android.annotation.SuppressLint import android.content.Context import android.graphics.Color import android.view.LayoutInflater import android.view.ViewGroup import android.widget.LinearLayout import androidx.recyclerview.widget.RecyclerView import com.casic.endoscope.R import com.casic.endoscope.bean.CameraPointBean import com.pengxh.kt.lite.adapter.ViewHolder import com.pengxh.kt.lite.extensions.convertColor class CameraPointAdapter( private val context: Context, private val dataRows: MutableList<CameraPointBean> ) : RecyclerView.Adapter<ViewHolder>() { private var multipleSelected = mutableSetOf<Int>() private var selectedItems = ArrayList<CameraPointBean>() override fun getItemCount(): Int = dataRows.size override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return ViewHolder( LayoutInflater.from(context).inflate(R.layout.item_point_list_rv, parent, false) ) } @SuppressLint("NotifyDataSetChanged") fun setRefreshData(dataRows: MutableList<CameraPointBean>) { this.dataRows.clear() this.dataRows.addAll(dataRows) notifyDataSetChanged() multipleSelected.clear() selectedItems.clear() } override fun onBindViewHolder(holder: ViewHolder, position: Int) { val item = dataRows[position] holder.setText(R.id.stepNameView, "步骤 ${item.step}") .setText(R.id.hAngleView, "水平角度 ${item.hAngle}°") .setText(R.id.vAngleView, "垂直角度 ${item.vAngle}°") val linearLayout = holder.itemView.findViewById<LinearLayout>(R.id.rootView) //item背景色 if (position % 2 == 0) { linearLayout.setBackgroundColor(Color.parseColor("#C8E3F4")) } else { linearLayout.setBackgroundColor(R.color.backgroundColor.convertColor(context)) } holder.itemView.isSelected = multipleSelected.contains(position) holder.itemView.setOnClickListener { if (multipleSelected.contains(position)) { multipleSelected.remove(position) selectedItems.remove(dataRows[position]) holder.itemView.isSelected = false } else { multipleSelected.add(position) selectedItems.add(dataRows[position]) holder.itemView.isSelected = true } itemCheckedListener?.onItemChecked(position, selectedItems) } } private var itemCheckedListener: OnItemCheckedListener? = null interface OnItemCheckedListener { fun onItemChecked(position: Int, items: ArrayList<CameraPointBean>) } fun setOnItemCheckedListener(listener: OnItemCheckedListener) { itemCheckedListener = listener } }