左晓为主开发手持机充值管理机
zuojincheng
2025-04-03 d0a0e8e242e293ad35dfbee1217f1103302818cd
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
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 ?: "无"
            }
        }
    }
}