| | |
| | | package com.dayu.general.adapter |
| | | |
| | | import android.view.LayoutInflater |
| | | import android.view.View |
| | | import android.view.ViewGroup |
| | | import androidx.recyclerview.widget.RecyclerView |
| | | import com.dayu.general.bean.net.SearchUserResult |
| | |
| | | class SearchListAdapter : RecyclerView.Adapter<SearchListAdapter.UserViewHolder>(){ |
| | | |
| | | private val userList = mutableListOf<SearchUserResult.UserInfo>() |
| | | private var onItemClickListener: ((SearchUserResult.UserInfo) -> Unit)? = null |
| | | |
| | | fun setData(users: List<SearchUserResult.UserInfo>) { |
| | | userList.clear() |
| | | userList.addAll(users) |
| | | notifyDataSetChanged() |
| | | } |
| | | |
| | | fun addData(users: List<SearchUserResult.UserInfo>) { |
| | | val startPosition = userList.size |
| | | userList.addAll(users) |
| | | notifyItemRangeInserted(startPosition, users.size) |
| | | } |
| | | |
| | | fun setOnItemClickListener(listener: (SearchUserResult.UserInfo) -> Unit) { |
| | | this.onItemClickListener = listener |
| | | } |
| | | |
| | | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder { |
| | |
| | | |
| | | inner class UserViewHolder(private val binding: ItemUserListBinding) : RecyclerView.ViewHolder(binding.root) { |
| | | fun bind(user: SearchUserResult.UserInfo) { |
| | | // 设置数据显示,添加判空处理 |
| | | binding.tvCardCount.text = "卡数量:${user.cardCount ?: "0"}" |
| | | binding.tvFarmerId.text = "客户编号:${user.clientNum ?: ""}" |
| | | binding.tvIdCard.text = "身份证:${user.idCard ?: ""}" |
| | | binding.tvName.text = "姓名:${user.name ?: ""}" |
| | | binding.tvPhone.text = "电话:${user.phone ?: ""}" |
| | | binding.tvFarmerId.text = "客户编号:${user.clientNum ?: "无"}" |
| | | binding.tvIdCard.text = "身份证:${formatIdCard(user.idCard)}" |
| | | binding.tvName.text = "姓名:${user.name ?: "未知"}" |
| | | binding.tvPhone.text = "电话:${formatPhone(user.phone)}" |
| | | |
| | | // 添加地址信息显示 |
| | | user.address?.let { address -> |
| | | if (address.isNotEmpty()) { |
| | | binding.tvAddress.text = "地址:$address" |
| | | binding.tvAddress.visibility = View.VISIBLE |
| | | } else { |
| | | binding.tvAddress.visibility = View.GONE |
| | | } |
| | | } ?: run { |
| | | binding.tvAddress.visibility = View.GONE |
| | | } |
| | | |
| | | // 显示操作日期 |
| | | user.operateDt?.let { date -> |
| | | if (date.isNotEmpty()) { |
| | | binding.tvOperateDate.text = "操作日期:$date" |
| | | binding.tvOperateDate.visibility = View.VISIBLE |
| | | } else { |
| | | binding.tvOperateDate.visibility = View.GONE |
| | | } |
| | | } ?: run { |
| | | binding.tvOperateDate.visibility = View.GONE |
| | | } |
| | | |
| | | binding.root.setOnClickListener { |
| | | // 可以在此处添加点击事件,例如查看用户详情 |
| | | onItemClickListener?.invoke(user) |
| | | } |
| | | } |
| | | |
| | | // 格式化身份证号,保护隐私 |
| | | private fun formatIdCard(idCard: String?): String { |
| | | return if (!idCard.isNullOrEmpty() && idCard.length >= 18) { |
| | | val start = idCard.substring(0, 6) |
| | | val end = idCard.substring(idCard.length - 4) |
| | | "$start****$end" |
| | | } else { |
| | | idCard ?: "无" |
| | | } |
| | | } |
| | | |
| | | // 格式化手机号,保护隐私 |
| | | private fun formatPhone(phone: String?): String { |
| | | return if (!phone.isNullOrEmpty() && phone.length >= 11) { |
| | | val start = phone.substring(0, 3) |
| | | val end = phone.substring(phone.length - 4) |
| | | "$start****$end" |
| | | } else { |
| | | phone ?: "无" |
| | | } |
| | | } |
| | | } |