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