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