package com.dayu.general.adapter
|
|
import android.content.Context
|
import android.view.LayoutInflater
|
import android.view.ViewGroup
|
import androidx.databinding.DataBindingUtil
|
import androidx.recyclerview.widget.RecyclerView
|
import com.dayu.baselibrary.databinding.ItemNoMoreBinding
|
import com.dayu.general.bean.net.SearchUserResult
|
import com.dayu.general.databinding.ItemUserListBinding
|
|
/**
|
* Description: 用户列表适配器
|
* Author: zuo
|
* Date: 2025/3/10
|
*/
|
class SearchUserListAdapter : BaseRecycleAdapter<RecyclerView.ViewHolder>() {
|
|
private var userList: List<SearchUserResult.UserInfo> = emptyList()
|
private var onItemClickListener: ((SearchUserResult.UserInfo) -> Unit)? = null
|
|
fun setData(data: List<SearchUserResult.UserInfo>) {
|
userList = data
|
notifyDataSetChanged()
|
}
|
|
fun addData(data: List<SearchUserResult.UserInfo>) {
|
val oldSize = userList.size
|
userList = userList + data
|
notifyItemRangeInserted(oldSize, data.size)
|
}
|
|
fun setOnItemClickListener(listener: (SearchUserResult.UserInfo) -> Unit) {
|
onItemClickListener = listener
|
}
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
if (viewType == VIEW_TYPE_EMPTY) {
|
val emptyView: ItemNoMoreBinding = DataBindingUtil.inflate(
|
(parent.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater)!!,
|
com.dayu.baselibrary.R.layout.item_no_more,
|
parent,
|
false
|
)
|
return ViewHolderEmpty(emptyView)
|
} else {
|
val binding = ItemUserListBinding.inflate(
|
parent.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater,
|
parent,
|
false
|
)
|
return UserViewHolder(binding)
|
}
|
}
|
|
override fun getItemViewType(position: Int): Int {
|
if (userList.size == 0) {
|
return VIEW_TYPE_EMPTY
|
}else{
|
return VIEW_TYPE_ITEM
|
}
|
}
|
|
override fun getItemCount(): Int {
|
//同时这里也需要添加判断,如果mData.size()为0的话,只引入一个布局,就是emptyView
|
// 那么,这个recyclerView的itemCount为1
|
if (userList.size == 0) {
|
return 1
|
}
|
return userList.size
|
}
|
|
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
|
if (holder is ViewHolderEmpty) {
|
// 空视图不需要绑定数据
|
return
|
}
|
|
if (holder is UserViewHolder) {
|
val card = userList[position]
|
holder.bind(card)
|
holder.itemView.setOnClickListener {
|
onItemClickListener?.invoke(card)
|
}
|
}
|
}
|
|
|
class UserViewHolder(private val binding: ItemUserListBinding) : RecyclerView.ViewHolder(binding.root) {
|
|
fun bind(user: SearchUserResult.UserInfo) {
|
binding.tvName.text = user.name
|
binding.tvFarmerId.text = "农户编号:${user.clientNum}"
|
binding.tvCardCount.text = "卡片数量:${user.cardCount}"
|
binding.tvIdCard.text = "身份证号:${formatIdCard(user.idCard)}"
|
binding. tvPhone.text = "联系电话:${formatPhone(user.phone)}"
|
binding.tvAddressValue.text = user.address
|
binding.tvOperateDate.text = "操作日期:${user.operateDt}"
|
|
|
}
|
|
// 格式化身份证号,保护隐私
|
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 ?: "无"
|
}
|
}
|
}
|
}
|