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.R
|
import com.dayu.general.bean.net.SearchCardResult
|
import com.dayu.general.databinding.ItemUnlossCardListBinding
|
|
/**
|
* Description: 解除挂失和补卡列表适配器
|
* Author: zuo
|
* Date: 2025/6/11
|
*/
|
class UnlossCardListAdapter(context: Context) : BaseRecycleAdapter<RecyclerView.ViewHolder>() {
|
|
private var cardList: List<SearchCardResult.CardInfo> = emptyList()
|
private var onUnlossClickListener: ((SearchCardResult.CardInfo) -> Unit)? = null
|
private var onReplaceClickListener: ((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 setOnUnlossClickListener(listener: (SearchCardResult.CardInfo) -> Unit) {
|
onUnlossClickListener = listener
|
}
|
|
fun setOnReplaceClickListener(listener: (SearchCardResult.CardInfo) -> Unit) {
|
onReplaceClickListener = 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 = ItemUnlossCardListBinding.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)
|
}
|
}
|
|
inner class CardViewHolder(private val binding: ItemUnlossCardListBinding) : 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.btnUnloss.setOnClickListener {
|
onUnlossClickListener?.invoke(card)
|
}
|
|
// 设置补卡按钮点击事件
|
binding.btnReplace.setOnClickListener {
|
onReplaceClickListener?.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 ?: "无"
|
}
|
}
|
}
|
}
|