From 793d4ee43f963935919f2ebf4b743e924c169e33 Mon Sep 17 00:00:00 2001 From: zuojincheng <lf_zuo@163.com> Date: 星期一, 31 三月 2025 09:59:20 +0800 Subject: [PATCH] feat(search): 新增用户搜索功能并优化用户体验 --- generallibrary/src/main/java/com/dayu/general/adapter/SearchListAdapter.kt | 69 ++++++++++++++++++++++++++++++++-- 1 files changed, 64 insertions(+), 5 deletions(-) diff --git a/generallibrary/src/main/java/com/dayu/general/adapter/SearchListAdapter.kt b/generallibrary/src/main/java/com/dayu/general/adapter/SearchListAdapter.kt index debb5f1..d63f6ac 100644 --- a/generallibrary/src/main/java/com/dayu/general/adapter/SearchListAdapter.kt +++ b/generallibrary/src/main/java/com/dayu/general/adapter/SearchListAdapter.kt @@ -1,6 +1,7 @@ package com.dayu.general.adapter import android.view.LayoutInflater +import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.dayu.general.bean.net.SearchUserResult @@ -14,11 +15,22 @@ class SearchListAdapter : RecyclerView.Adapter<SearchListAdapter.UserViewHolder>(){ private val userList = mutableListOf<SearchUserResult.UserInfo>() + private var onItemClickListener: ((SearchUserResult.UserInfo) -> Unit)? = null fun setData(users: List<SearchUserResult.UserInfo>) { userList.clear() userList.addAll(users) notifyDataSetChanged() + } + + fun addData(users: List<SearchUserResult.UserInfo>) { + val startPosition = userList.size + userList.addAll(users) + notifyItemRangeInserted(startPosition, users.size) + } + + fun setOnItemClickListener(listener: (SearchUserResult.UserInfo) -> Unit) { + this.onItemClickListener = listener } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder { @@ -35,14 +47,61 @@ inner class UserViewHolder(private val binding: ItemUserListBinding) : RecyclerView.ViewHolder(binding.root) { fun bind(user: SearchUserResult.UserInfo) { + // 璁剧疆鏁版嵁鏄剧ず锛屾坊鍔犲垽绌哄鐞� binding.tvCardCount.text = "鍗℃暟閲忥細${user.cardCount ?: "0"}" - binding.tvFarmerId.text = "瀹㈡埛缂栧彿锛�${user.clientNum ?: ""}" - binding.tvIdCard.text = "韬唤璇侊細${user.idCard ?: ""}" - binding.tvName.text = "濮撳悕锛�${user.name ?: ""}" - binding.tvPhone.text = "鐢佃瘽锛�${user.phone ?: ""}" + binding.tvFarmerId.text = "瀹㈡埛缂栧彿锛�${user.clientNum ?: "鏃�"}" + binding.tvIdCard.text = "韬唤璇侊細${formatIdCard(user.idCard)}" + binding.tvName.text = "濮撳悕锛�${user.name ?: "鏈煡"}" + binding.tvPhone.text = "鐢佃瘽锛�${formatPhone(user.phone)}" + + // 娣诲姞鍦板潃淇℃伅鏄剧ず + user.address?.let { address -> + if (address.isNotEmpty()) { + binding.tvAddress.text = "鍦板潃锛�$address" + binding.tvAddress.visibility = View.VISIBLE + } else { + binding.tvAddress.visibility = View.GONE + } + } ?: run { + binding.tvAddress.visibility = View.GONE + } + + // 鏄剧ず鎿嶄綔鏃ユ湡 + user.operateDt?.let { date -> + if (date.isNotEmpty()) { + binding.tvOperateDate.text = "鎿嶄綔鏃ユ湡锛�$date" + binding.tvOperateDate.visibility = View.VISIBLE + } else { + binding.tvOperateDate.visibility = View.GONE + } + } ?: run { + binding.tvOperateDate.visibility = View.GONE + } binding.root.setOnClickListener { - // 鍙互鍦ㄦ澶勬坊鍔犵偣鍑讳簨浠讹紝渚嬪鏌ョ湅鐢ㄦ埛璇︽儏 + onItemClickListener?.invoke(user) + } + } + + // 鏍煎紡鍖栬韩浠借瘉鍙凤紝淇濇姢闅愮 + 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 ?: "鏃�" } } } -- Gitblit v1.8.0