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
|
import com.dayu.general.databinding.ItemUserListBinding
|
|
/**
|
* Description:
|
* Author: zuo
|
* Date: 2025/3/10
|
*/
|
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 {
|
val binding = ItemUserListBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
return UserViewHolder(binding)
|
}
|
|
override fun onBindViewHolder(holder: UserViewHolder, position: Int) {
|
val user = userList[position]
|
holder.bind(user)
|
}
|
|
override fun getItemCount(): Int = userList.size
|
|
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 = "身份证:${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 ?: "无"
|
}
|
}
|
}
|
}
|