From e6e85c6fc87ba0688dae074a6aeda58f24ea05e9 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期三, 02 四月 2025 10:02:57 +0800
Subject: [PATCH] feat(generallibrary): 添加卡片列表适配器和搜索结果 Bean
---
generallibrary/src/main/java/com/dayu/general/bean/net/SearchCardResult.kt | 29 +++++++++
generallibrary/src/main/java/com/dayu/general/adapter/CardListAdapter.kt | 98 ++++++++++++++++++++++++++++++++
2 files changed, 127 insertions(+), 0 deletions(-)
diff --git a/generallibrary/src/main/java/com/dayu/general/adapter/CardListAdapter.kt b/generallibrary/src/main/java/com/dayu/general/adapter/CardListAdapter.kt
new file mode 100644
index 0000000..6b4e1ea
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/adapter/CardListAdapter.kt
@@ -0,0 +1,98 @@
+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.SearchCardResult
+import com.dayu.general.databinding.ItemCardListBinding
+
+/**
+ * Description: 鍗$墖鍒楄〃閫傞厤鍣�
+ * Author: zuo
+ * Date: 2025/3/31
+ */
+class CardListAdapter : RecyclerView.Adapter<CardListAdapter.CardViewHolder>() {
+
+ private val cardList = mutableListOf<SearchCardResult.CardInfo>()
+ private var onItemClickListener: ((SearchCardResult.CardInfo) -> Unit)? = null
+
+ fun setData(cards: List<SearchCardResult.CardInfo>) {
+ cardList.clear()
+ cardList.addAll(cards)
+ notifyDataSetChanged()
+ }
+
+ fun addData(cards: List<SearchCardResult.CardInfo>) {
+ val startPosition = cardList.size
+ cardList.addAll(cards)
+ notifyItemRangeInserted(startPosition, cards.size)
+ }
+
+ fun setOnItemClickListener(listener: (SearchCardResult.CardInfo) -> Unit) {
+ this.onItemClickListener = listener
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CardViewHolder {
+ val binding = ItemCardListBinding.inflate(LayoutInflater.from(parent.context), parent, false)
+ return CardViewHolder(binding)
+ }
+
+ override fun onBindViewHolder(holder: CardViewHolder, position: Int) {
+ val card = cardList[position]
+ holder.bind(card)
+ }
+
+ override fun getItemCount(): Int = cardList.size
+
+ 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)}"
+
+ // 鏄剧ず韬唤璇佸彿
+ card.idCard?.let { idCard ->
+ if (idCard.isNotEmpty()) {
+ binding.tvIdCard.text = "韬唤璇侊細${formatIdCard(idCard)}"
+ binding.tvIdCard.visibility = View.VISIBLE
+ } else {
+ binding.tvIdCard.visibility = View.GONE
+ }
+ } ?: run {
+ binding.tvIdCard.visibility = View.GONE
+ }
+
+ 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 ?: "鏃�"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/bean/net/SearchCardResult.kt b/generallibrary/src/main/java/com/dayu/general/bean/net/SearchCardResult.kt
new file mode 100644
index 0000000..8c3bdde
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/bean/net/SearchCardResult.kt
@@ -0,0 +1,29 @@
+package com.dayu.general.bean.net
+
+/**
+ * Description: 鎼滅储鍗$墖缁撴灉Bean
+ * Author: zuo
+ * Date: 2025/3/31
+ */
+data class SearchCardResult(
+ val itemTotal: Int, // 鎬绘潯鐩暟
+ val obj: List<CardInfo>, // 鍗$墖淇℃伅鍒楄〃
+ val pageCurr: Int, // 褰撳墠椤电爜
+ val pageSize: Int, // 姣忛〉澶у皬
+ val pageTotal: Int // 鎬婚〉鏁�
+) {
+ /**
+ * 鍗$墖淇℃伅
+ */
+ data class CardInfo(
+ val cardNum: String? = null, // 鍗″彿
+ val cardState: Int? = null, // 鍗$墖鐘舵�佺爜
+ val cardType: String? = null, // 鍗$墖绫诲瀷
+ val clientName: String? = null, // 瀹㈡埛濮撳悕
+ val clientNum: String? = null, // 瀹㈡埛缂栧彿
+ val idCard: String? = null, // 韬唤璇佸彿
+ val money: String? = null, // 鍗′綑棰�
+ val phone: String? = null, // 鐢佃瘽鍙风爜
+ val stateName: String? = null // 鐘舵�佸悕绉�
+ )
+}
\ No newline at end of file
--
Gitblit v1.8.0