package com.dayu.general.adapter
|
|
import android.content.Context
|
import android.view.LayoutInflater
|
import android.view.View
|
import android.view.ViewGroup
|
import android.widget.TextView
|
import androidx.databinding.DataBindingUtil
|
import androidx.recyclerview.widget.RecyclerView
|
import com.dayu.baselibrary.databinding.ItemNoMoreBinding
|
import com.dayu.general.R
|
import com.dayu.general.bean.net.SearchCardResult
|
import com.dayu.general.databinding.ItemCardListBinding
|
|
/**
|
* Description: 卡片列表适配器
|
* Author: zuo
|
* Date: 2025/3/31
|
*/
|
class CardListAdapter(context: Context) : BaseRecycleAdapter<RecyclerView.ViewHolder>() {
|
|
private var cardList: List<SearchCardResult.CardInfo> = emptyList()
|
private var onItemClickListener: ((SearchCardResult.CardInfo) -> Unit)? = null
|
var mContext: Context = context
|
|
fun setData(data: List<SearchCardResult.CardInfo>) {
|
cardList = data
|
notifyDataSetChanged()
|
}
|
|
fun addData(data: List<SearchCardResult.CardInfo>) {
|
val oldSize = cardList.size
|
cardList = cardList + data
|
notifyItemRangeInserted(oldSize, data.size)
|
}
|
|
fun setOnItemClickListener(listener: (SearchCardResult.CardInfo) -> Unit) {
|
onItemClickListener = listener
|
}
|
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
|
if (viewType == VIEW_TYPE_EMPTY) {
|
val emptyView: ItemNoMoreBinding = DataBindingUtil.inflate(
|
(mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater)!!,
|
com.dayu.baselibrary.R.layout.item_no_more,
|
parent,
|
false
|
)
|
return ViewHolderEmpty(emptyView)
|
} else {
|
val binding = ItemCardListBinding.inflate(
|
mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater,
|
parent,
|
false
|
)
|
return CardViewHolder(binding)
|
}
|
}
|
|
override fun getItemViewType(position: Int): Int {
|
if (cardList.size == 0) {
|
return VIEW_TYPE_EMPTY
|
} else {
|
return VIEW_TYPE_ITEM
|
}
|
}
|
|
override fun getItemCount(): Int {
|
//同时这里也需要添加判断,如果mData.size()为0的话,只引入一个布局,就是emptyView
|
// 那么,这个recyclerView的itemCount为1
|
if (cardList.size == 0) {
|
return 1
|
}
|
return cardList.size
|
}
|
|
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
|
if (holder is ViewHolderEmpty) {
|
// 空视图不需要绑定数据
|
return
|
}
|
|
if (holder is CardViewHolder) {
|
val card = cardList[position]
|
holder.bind(card)
|
holder.itemView.setOnClickListener {
|
onItemClickListener?.invoke(card)
|
}
|
}
|
}
|
|
|
inner class CardViewHolder(private val binding: ItemCardListBinding) : RecyclerView.ViewHolder(binding.root) {
|
|
fun bind(card: SearchCardResult.CardInfo) {
|
// 设置数据显示,添加判空处理
|
binding.tvCardNumber.text = "卡号:${card.cardNum ?: "无"}"
|
binding.tvCardType.text = "卡类型:${card.cardType ?: "未知"}"
|
binding.tvCardStatus.text = "状态:${card.stateName ?: "未知"}"
|
binding.tvClientName.text = "姓名:${card.clientName ?: "未知"}"
|
binding.tvClientNum.text = "客户编号:${card.clientNum ?: "无"}"
|
binding.tvCardBalance.text = "余额:${card.money ?: "0.00"} 元"
|
binding.tvPhone.text = "电话:${formatPhone(card.phone)}"
|
binding.tvIdCard.text = "身份证:${formatIdCard( card.idCard)}"
|
|
|
binding.root.setOnClickListener {
|
onItemClickListener?.invoke(card)
|
}
|
}
|
// 格式化身份证号,保护隐私
|
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 ?: "无"
|
}
|
}
|
} }
|