左晓为主开发手持机充值管理机
zuoxiao
昨天 8ad22c47f5d44635618f75e7085743893cdace4c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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 ?: "无"
            }
        }
    }