From d0a0e8e242e293ad35dfbee1217f1103302818cd Mon Sep 17 00:00:00 2001
From: zuojincheng <lf_zuo@163.com>
Date: 星期四, 03 四月 2025 10:22:48 +0800
Subject: [PATCH] refactor(generallibrary):重构卡片和用户搜索功能

---
 generallibrary/src/main/java/com/dayu/general/view/CardRefundDialog.kt           |   85 +++
 generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt         |    5 
 generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt           |    6 
 generallibrary/src/main/java/com/dayu/general/activity/SearchCardListActivity.kt |  127 +++-
 generallibrary/src/main/java/com/dayu/general/adapter/BaseRecycleAdapter.kt      |   21 
 generallibrary/src/main/java/com/dayu/general/view/CardSearchDialog.kt           |    8 
 generallibrary/src/main/res/layout/fragment_card.xml                             |  302 +++++++----
 generallibrary/src/main/java/com/dayu/general/adapter/CardListAdapter.kt         |  105 ++-
 generallibrary/src/main/java/com/dayu/general/BaseApplication.kt                 |    2 
 README.md                                                                        |  109 ++++
 /dev/null                                                                        |  108 ----
 generallibrary/src/main/res/layout/activity_card_list.xml                        |   49 +
 generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt |   12 
 generallibrary/src/main/res/layout/item_user_list.xml                            |   26 
 generallibrary/src/main/java/com/dayu/general/view/SearchDialog.kt               |    8 
 generallibrary/src/main/AndroidManifest.xml                                      |    4 
 generallibrary/src/main/java/com/dayu/general/adapter/SearchUserListAdapter.kt   |  125 +++++
 generallibrary/src/main/res/layout/item_card_list.xml                            |   76 +-
 generallibrary/src/main/res/layout/activity_search_user_ge.xml                   |   42 
 generallibrary/src/main/res/layout/dialog_card_refund.xml                        |  205 ++++++++
 20 files changed, 1,018 insertions(+), 407 deletions(-)

diff --git a/README.md b/README.md
index 7bbc25a..5b607f1 100644
--- a/README.md
+++ b/README.md
@@ -111,6 +111,115 @@
   - 鑷畾涔夌粦瀹氶�傞厤鍣�
   - 琛ㄨ揪寮忔敮鎸�
 
+### RecyclerView 鍒楄〃涓虹┖鏃剁殑瀹炵幇
+鍦� RecyclerView 閫傞厤鍣ㄤ腑锛屽綋鍒楄〃鏁版嵁涓虹┖鏃讹紝鏄剧ず涓�涓┖瑙嗗浘锛圗mptyView锛夌殑瀹炵幇鏂瑰紡锛�
+
+1. 缁ф壙 BaseRecycleAdapter锛�
+```kotlin
+class YourAdapter : BaseRecycleAdapter<RecyclerView.ViewHolder>() {
+    // 瀹炵幇蹇呰鐨勬柟娉�
+}
+```
+
+2. 鍦ㄩ�傞厤鍣ㄤ腑瀹氫箟瑙嗗浘绫诲瀷甯搁噺锛堝凡鍦� BaseRecycleAdapter 涓畾涔夛級锛�
+```kotlin
+companion object {
+    const val VIEW_TYPE_ITEM = 1
+    const val VIEW_TYPE_EMPTY = 0
+}
+```
+
+3. 閲嶅啓 getItemViewType 鏂规硶锛�
+```kotlin
+override fun getItemViewType(position: Int): Int {
+    if (dataList.isEmpty()) {
+        return VIEW_TYPE_EMPTY
+    }
+    return VIEW_TYPE_ITEM
+}
+```
+
+4. 閲嶅啓 getItemCount 鏂规硶锛�
+```kotlin
+override fun getItemCount(): Int {
+    if (dataList.isEmpty()) {
+        return 1  // 杩斿洖1琛ㄧず鏄剧ず绌鸿鍥�
+    }
+    return dataList.size
+}
+```
+
+5. 鍦� onCreateViewHolder 涓鐞嗕笉鍚岀被鍨嬬殑瑙嗗浘锛�
+```kotlin
+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)!!,
+            R.layout.item_no_more,
+            parent,
+            false
+        )
+        return ViewHolderEmpty(emptyView)
+    } else {
+        val binding = ItemListBinding.inflate(
+            parent.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater,
+            parent,
+            false
+        )
+        return ItemViewHolder(binding.root)
+    }
+}
+```
+
+6. 閲嶅啓 onBindViewHolder 鏂规硶锛�
+```kotlin
+override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
+    if (holder is ViewHolderEmpty) {
+        // 绌鸿鍥句笉闇�瑕佺粦瀹氭暟鎹�
+        return
+    }
+    
+    // 缁戝畾鍒楄〃椤规暟鎹�
+    if (holder is ItemViewHolder) {
+        val item = dataList[position]
+        holder.bind(item)
+    }
+}
+```
+
+7. 绌鸿鍥剧殑甯冨眬鏂囦欢绀轰緥锛坕tem_no_more.xml锛夛細
+```xml
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android">
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:orientation="vertical"
+        android:padding="16dp">
+
+        <ImageView
+            android:layout_width="48dp"
+            android:layout_height="48dp"
+            android:src="@drawable/ic_empty" />
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:text="鏆傛棤鏁版嵁"
+            android:textColor="@color/text_gray"
+            android:textSize="14sp" />
+    </LinearLayout>
+</layout>
+```
+
+杩欑瀹炵幇鏂瑰紡鐨勪紭鐐癸細
+1. 缁熶竴鐨勭┖瑙嗗浘澶勭悊閫昏緫
+2. 鏀寔鑷畾涔夌┖瑙嗗浘鏍峰紡
+3. 涓嶅奖鍝嶅垪琛ㄦ甯告暟鎹殑鏄剧ず
+4. 渚夸簬缁存姢鍜屾墿灞�
+
 ## 鏁版嵁搴撶粨鏋�
 
 ### GeneralLibrary 鏁版嵁搴�
diff --git a/generallibrary/src/main/AndroidManifest.xml b/generallibrary/src/main/AndroidManifest.xml
index 32912b8..3172cdf 100644
--- a/generallibrary/src/main/AndroidManifest.xml
+++ b/generallibrary/src/main/AndroidManifest.xml
@@ -49,7 +49,7 @@
         <!--        </activity>-->
         <activity android:name="com.dayu.general.activity.NewCardActivity" />
         <activity android:name="com.dayu.general.activity.ManageListActivity" />
-        <activity android:name="com.dayu.general.activity.SearchUserActivity"/>
+        <activity android:name="com.dayu.general.activity.SearchUserListActivity"/>
         <activity android:name="com.dayu.general.activity.NfcWreatActivity"
             android:exported="false"
             android:launchMode="singleTop"
@@ -71,7 +71,7 @@
                 <data android:mimeType="text/plain" />
             </intent-filter>
         </activity>
-        <activity android:name=".activity.CardListActivity"/>
+        <activity android:name=".activity.SearchCardListActivity"/>
 
 
 
diff --git a/generallibrary/src/main/java/com/dayu/general/BaseApplication.kt b/generallibrary/src/main/java/com/dayu/general/BaseApplication.kt
index 15842a8..facf186 100644
--- a/generallibrary/src/main/java/com/dayu/general/BaseApplication.kt
+++ b/generallibrary/src/main/java/com/dayu/general/BaseApplication.kt
@@ -47,7 +47,7 @@
 
     }
      fun init() {
-        projectDataDao = application?.let { BaseDaoSingleton.getInstance(it)?.projectDataDao() }
+        projectDataDao = application?.let { BaseDaoSingleton.getInstance(it).projectDataDao() }
         if (projectDataDao != null) {
             val projectDataBean = projectDataDao?.findFirst()
             if (projectDataBean != null) {
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt b/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt
index 2a5ad7c..9cc98ad 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/BSCardFragment.kt
@@ -7,7 +7,6 @@
 import android.view.ViewGroup
 import androidx.fragment.app.Fragment
 import com.dayu.general.databinding.FragmentCardBinding
-import com.tencent.bugly.proguard.v
 
 /**
  * @author: zuo
@@ -33,7 +32,7 @@
 
     private fun initView() {
         binding?.homeNewCard?.setOnClickListener {
-            val intent = Intent(context, SearchUserActivity::class.java).apply {
+            val intent = Intent(context, SearchUserListActivity::class.java).apply {
                 putExtra("type", "newUser")
             }
             startActivity(intent)
@@ -43,7 +42,7 @@
             startActivity(intent)
         }
         binding?.homeLossLL?.setOnClickListener {
-            val intent = Intent(context, CardListActivity::class.java).apply{
+            val intent = Intent(context, SearchCardListActivity::class.java).apply{
                 putExtra("type", "loss")
             }
             startActivity(intent)
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
index 6d9dc1c..4e425e0 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/MainActivity.kt
@@ -62,9 +62,9 @@
 
 
     private fun initView() {
-        binding!!.BSCardLL.setOnClickListener { v -> changeBottomState(Tab.BSC) }
-        binding!!.rechargeLL.setOnClickListener { v -> changeBottomState(Tab.RECHARGE) }
-        binding!!.myLL.setOnClickListener { v -> changeBottomState(Tab.MY) }
+        binding!!.BSCardLL.setOnClickListener {  changeBottomState(Tab.BSC) }
+        binding!!.rechargeLL.setOnClickListener {  changeBottomState(Tab.RECHARGE) }
+        binding!!.myLL.setOnClickListener { changeBottomState(Tab.MY) }
     }
 
 
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/SearchCardListActivity.kt
similarity index 70%
rename from generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt
rename to generallibrary/src/main/java/com/dayu/general/activity/SearchCardListActivity.kt
index 43874cd..58f452c 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/SearchCardListActivity.kt
@@ -6,12 +6,14 @@
 import com.dayu.baselibrary.utils.ToastUtil
 import com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE
 import com.dayu.baselibrary.view.TitleBar.ClickType_RIGHT_IMAGE
+import com.dayu.general.BaseApplication
 import com.dayu.general.adapter.CardListAdapter
 import com.dayu.general.bean.net.SearchCardResult
 import com.dayu.general.databinding.ActivityCardListBinding
-import com.dayu.general.view.CardSearchDialog
 import com.dayu.general.net.ApiManager
 import com.dayu.general.net.BaseResponse
+import com.dayu.general.view.CardRefundDialog
+import com.dayu.general.view.SearchDialog
 import com.scwang.smart.refresh.layout.api.RefreshLayout
 import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
 
@@ -20,21 +22,21 @@
  * @date: 2023/3/31
  * @description: 鍗$墖鍒楄〃鐣岄潰
  */
-class CardListActivity : BaseActivity() {
+class SearchCardListActivity : BaseActivity() {
 
     var binding: ActivityCardListBinding? = null
     private var cardAdapter: CardListAdapter? = null
-    var searchDialog: CardSearchDialog? = null
-    
+    var searchDialog: SearchDialog? = null
+
     // 鍒嗛〉鐩稿叧鍙橀噺
     private var currentPage = 1
     private val pageSize = 20
     private var hasMoreData = true
-    
+
     // 淇濆瓨褰撳墠鎼滅储鏉′欢
+    private var currentFarmerId = ""
+    private var currentFarmerName = ""
     private var currentCardNumber = ""
-    private var currentClientNumber = ""
-    private var currentClientName = ""
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -46,23 +48,23 @@
     }
 
     fun initView() {
-        searchDialog = CardSearchDialog(this)
+        searchDialog = SearchDialog(this)
         searchDialog?.show()
         binding?.titleBar?.setOnItemclickListner(ClickType_LEFT_IMAGE) { this.finish() }
         // 璁剧疆鎼滅储鐩戝惉鍣�
-        searchDialog?.setOnSearchListener(object : CardSearchDialog.OnSearchListener {
-            override fun onSearch(cardNumber: String, clientNumber: String, clientName: String) {
+        searchDialog?.setOnSearchListener(object : SearchDialog.OnSearchListener {
+            override fun onSearch(farmerId: String, farmerName: String, cardNumber: String) {
                 // 淇濆瓨褰撳墠鎼滅储鏉′欢
                 currentCardNumber = cardNumber
-                currentClientNumber = clientNumber
-                currentClientName = clientName
-                
+                currentFarmerId = farmerId
+                currentFarmerName = farmerName
+
                 // 閲嶇疆鍒嗛〉鐘舵��
                 currentPage = 1
                 hasMoreData = true
-                
+
                 // 鎵ц鎼滅储
-                searchCards(cardNumber, clientNumber, clientName, true)
+                searchCards(currentFarmerId, currentFarmerName, currentCardNumber, true)
             }
         })
         binding?.titleBar?.setOnItemclickListner(ClickType_RIGHT_IMAGE) {
@@ -72,23 +74,31 @@
     }
 
     private fun setupRecyclerView() {
-        cardAdapter = CardListAdapter()
+        cardAdapter = CardListAdapter(this)
         binding?.recyclerView?.apply {
-            layoutManager = LinearLayoutManager(this@CardListActivity)
+            layoutManager = LinearLayoutManager(this@SearchCardListActivity)
             adapter = cardAdapter
         }
-        
+
         // 璁剧疆鍒楄〃椤圭偣鍑讳簨浠�
         cardAdapter?.setOnItemClickListener { card ->
-            // 澶勭悊鍗$墖鐐瑰嚮浜嬩欢
-            ToastUtil.show("宸查�夋嫨鍗$墖锛�${card.cardNum}")
-            // 杩欓噷鍙互娣诲姞璺宠浆鍒板崱鐗囪鎯呴〉闈㈢殑閫昏緫
-            // val intent = Intent(this, CardDetailActivity::class.java)
-            // intent.putExtra("cardNum", card.cardNum)
-            // startActivity(intent)
+            // 鏄剧ず閫�娆惧璇濇
+            val refundDialog = CardRefundDialog(this)
+            refundDialog.show() // 鍏堟樉绀哄璇濇
+            refundDialog.setUserInfo(
+                card.clientName.toString(),
+                card.cardNum.toString(),
+                card.money.toString()
+            )
+            refundDialog.setOnConfirmListener {  refundAmount, remark ->
+                // TODO: 澶勭悊閫�娆鹃�昏緫
+                lossPost(card.idCard.toString())
+            }
         }
+
+
     }
-    
+
     private fun setupRefreshLayout() {
         binding?.refreshLayout?.apply {
             // 璁剧疆鍒锋柊鍜屽姞杞芥洿澶氱洃鍚櫒
@@ -97,14 +107,14 @@
                     // 閲嶇疆椤电爜骞跺埛鏂版暟鎹�
                     currentPage = 1
                     hasMoreData = true
-                    searchCards(currentCardNumber, currentClientNumber, currentClientName, true)
+                    searchCards(currentFarmerId, currentFarmerName, currentCardNumber, true)
                 }
-                
+
                 override fun onLoadMore(refreshLayout: RefreshLayout) {
                     // 濡傛灉杩樻湁鏇村鏁版嵁锛屽姞杞戒笅涓�椤�
                     if (hasMoreData) {
                         currentPage++
-                        searchCards(currentCardNumber, currentClientNumber, currentClientName, false)
+                        searchCards(currentFarmerId, currentFarmerName, currentCardNumber, false)
                     } else {
                         // 瀹屾垚鍔犺浇骞舵彁绀烘病鏈夋洿澶氭暟鎹�
                         refreshLayout.finishLoadMore(500, true, false)
@@ -126,21 +136,26 @@
      * @param clientName 瀹㈡埛濮撳悕
      * @param isRefresh 鏄惁涓哄埛鏂版搷浣�
      */
-    private fun searchCards(cardNumber: String, clientNumber: String, clientName: String, isRefresh: Boolean = true) {
+    private fun searchCards(
+        farmerId: String,
+        farmerName: String,
+        cardNumber: String,
+        isRefresh: Boolean = true
+    ) {
         val map = mutableMapOf<String, Any>()
 
         if (cardNumber.isNotEmpty()) {
             map["cardNum"] = cardNumber
         }
 
-        if (clientNumber.isNotEmpty()) {
-            map["clientNum"] = clientNumber
+        if (farmerId.isNotEmpty()) {
+            map["clientNum"] = farmerId
         }
 
-        if (clientName.isNotEmpty()) {
-            map["clientName"] = clientName
+        if (farmerName.isNotEmpty()) {
+            map["clientName"] = farmerName
         }
-        
+
         // 娣诲姞鍒嗛〉鍙傛暟
         map["pageCurr"] = currentPage
         map["pageSize"] = pageSize
@@ -155,7 +170,7 @@
                 override fun onNext(t: BaseResponse<SearchCardResult>) {
                     // 瀹屾垚鍒锋柊鎴栧姞杞藉姩浣�
                     finishRefreshOrLoad(isRefresh)
-                    
+
                     if (t.success) {
                         // 澶勭悊鎼滅储鎴愬姛鐨勬儏鍐�
                         val result = t.content
@@ -168,7 +183,7 @@
                                 } else {
                                     cardAdapter?.addData(result.obj)
                                 }
-                                
+
                                 // 鍒ゆ柇鏄惁杩樻湁鏇村鏁版嵁锛氭牴鎹綋鍓嶉〉鐮佸拰鎬婚〉鏁板垽鏂�
                                 hasMoreData = currentPage < result.pageTotal
                             } else {
@@ -201,7 +216,40 @@
             }
         )
     }
-    
+
+
+    private fun lossPost(cardNumber: String) {
+        val map = mutableMapOf<String, Any>()
+
+        map["cardNum"] = cardNumber
+        map["operator"] = BaseApplication.userId
+        ApiManager.getInstance().requestGetLoading(
+            this,
+            "/sell/card/loss",
+            SearchCardResult::class.java,
+            map,
+            object : SubscriberListener<BaseResponse<SearchCardResult>>() {
+                override fun onNext(t: BaseResponse<SearchCardResult>) {
+
+
+                    if (t.success) {
+
+                    } else {
+                        // 澶勭悊鎼滅储澶辫触鐨勬儏鍐�
+                        ToastUtil.show(t.msg)
+                    }
+                }
+
+                override fun onError(e: Throwable?) {
+                    super.onError(e)
+                    // 瀹屾垚鍒锋柊鎴栧姞杞藉姩浣�
+                    ToastUtil.show("鎼滅储澶辫触: ${e?.message ?: "鏈煡閿欒"}")
+                }
+            }
+        )
+    }
+
+
     /**
      * 瀹屾垚鍒锋柊鎴栧姞杞芥搷浣�
      * @param isRefresh 鏄惁涓哄埛鏂版搷浣�
@@ -213,4 +261,9 @@
             binding?.refreshLayout?.finishLoadMore(true)
         }
     }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        searchDialog?.dismiss()
+    }
 }
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
similarity index 96%
rename from generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt
rename to generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
index b284cea..5e11d51 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
@@ -6,7 +6,7 @@
 import com.dayu.baselibrary.utils.ToastUtil
 import com.dayu.baselibrary.view.TitleBar.ClickType_LEFT_IMAGE
 import com.dayu.baselibrary.view.TitleBar.ClickType_RIGHT_IMAGE
-import com.dayu.general.adapter.SearchListAdapter
+import com.dayu.general.adapter.SearchUserListAdapter
 import com.dayu.general.bean.net.SearchUserResult
 import com.dayu.general.databinding.ActivitySearchUserGeBinding
 import com.dayu.general.view.SearchDialog
@@ -20,10 +20,10 @@
  * @date: 2023/6/26 16:09
  * @description:鎼滅储鐢ㄦ埛
  */
-class SearchUserActivity : BaseActivity() {
+class SearchUserListActivity : BaseActivity() {
 
     var binding: ActivitySearchUserGeBinding? = null
-    private var userAdapter: SearchListAdapter? = null
+    private var userAdapter: SearchUserListAdapter? = null
     var searchDialog: SearchDialog? = null
     
     // 鍒嗛〉鐩稿叧鍙橀噺
@@ -74,9 +74,9 @@
     }
 
     private fun setupRecyclerView() {
-        userAdapter = SearchListAdapter()
+        userAdapter = SearchUserListAdapter()
         binding?.recyclerView?.apply {
-            layoutManager = LinearLayoutManager(this@SearchUserActivity)
+            layoutManager = LinearLayoutManager(this@SearchUserListActivity)
             adapter = userAdapter
         }
         
@@ -89,6 +89,8 @@
             // intent.putExtra("userId", user.id)
             // startActivity(intent)
         }
+
+
     }
     
     private fun setupRefreshLayout() {
diff --git a/generallibrary/src/main/java/com/dayu/general/adapter/BaseRecycleAdapter.kt b/generallibrary/src/main/java/com/dayu/general/adapter/BaseRecycleAdapter.kt
index 54ed289..1073b23 100644
--- a/generallibrary/src/main/java/com/dayu/general/adapter/BaseRecycleAdapter.kt
+++ b/generallibrary/src/main/java/com/dayu/general/adapter/BaseRecycleAdapter.kt
@@ -9,27 +9,18 @@
  * Author: zuo
  * Date: 2025/3/10
  */
-class BaseRecycleAdapter<T : RecyclerView.ViewHolder>:RecyclerView.Adapter<T>() {
+abstract class BaseRecycleAdapter<T : RecyclerView.ViewHolder>:RecyclerView.Adapter<T>() {
     companion object {
         const val VIEW_TYPE_ITEM = 1
         const val VIEW_TYPE_EMPTY = 0
     }
 
-    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): T {
-        TODO("Not yet implemented")
+    abstract override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): T
 
-    }
+    abstract override fun getItemCount(): Int
 
-    override fun getItemCount(): Int {
-        TODO("Not yet implemented")
-
-    }
-
-    override fun onBindViewHolder(holder: T, position: Int) {
-        TODO("Not yet implemented")
-
-    }
-
+//    abstract override fun onBindViewHolder(holder: T, position: Int)
+//
     class ViewHolderEmpty(binding: ItemNoMoreBinding) : RecyclerView.ViewHolder(binding.root) {
         var mBinding: ItemNoMoreBinding = binding
         fun getBinding(): ItemNoMoreBinding {
@@ -40,4 +31,4 @@
             this.mBinding = binding
         }
     }
-    }
+}
diff --git a/generallibrary/src/main/java/com/dayu/general/adapter/CardListAdapter.kt b/generallibrary/src/main/java/com/dayu/general/adapter/CardListAdapter.kt
index 6b4e1ea..044ad98 100644
--- a/generallibrary/src/main/java/com/dayu/general/adapter/CardListAdapter.kt
+++ b/generallibrary/src/main/java/com/dayu/general/adapter/CardListAdapter.kt
@@ -1,9 +1,14 @@
 package com.dayu.general.adapter
 
+import android.content.Context
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.widget.TextView
+import androidx.databinding.DataBindingUtil
 import androidx.recyclerview.widget.RecyclerView
+import com.dayu.baselibrary.databinding.ItemNoMoreBinding
+import com.dayu.general.R
 import com.dayu.general.bean.net.SearchCardResult
 import com.dayu.general.databinding.ItemCardListBinding
 
@@ -12,40 +17,82 @@
  * Author: zuo
  * Date: 2025/3/31
  */
-class CardListAdapter : RecyclerView.Adapter<CardListAdapter.CardViewHolder>() {
+class CardListAdapter(context: Context) : BaseRecycleAdapter<RecyclerView.ViewHolder>() {
 
-    private val cardList = mutableListOf<SearchCardResult.CardInfo>()
+    private var cardList: List<SearchCardResult.CardInfo> = emptyList()
     private var onItemClickListener: ((SearchCardResult.CardInfo) -> Unit)? = null
+    var mContext: Context = context
 
-    fun setData(cards: List<SearchCardResult.CardInfo>) {
-        cardList.clear()
-        cardList.addAll(cards)
+    fun setData(data: List<SearchCardResult.CardInfo>) {
+        cardList = data
         notifyDataSetChanged()
     }
-    
-    fun addData(cards: List<SearchCardResult.CardInfo>) {
-        val startPosition = cardList.size
-        cardList.addAll(cards)
-        notifyItemRangeInserted(startPosition, cards.size)
+
+    fun addData(data: List<SearchCardResult.CardInfo>) {
+        val oldSize = cardList.size
+        cardList = cardList + data
+        notifyItemRangeInserted(oldSize, data.size)
     }
-    
+
     fun setOnItemClickListener(listener: (SearchCardResult.CardInfo) -> Unit) {
-        this.onItemClickListener = listener
+        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 onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
+        if (viewType == VIEW_TYPE_EMPTY) {
+            val emptyView: ItemNoMoreBinding = DataBindingUtil.inflate(
+                (mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater)!!,
+                com.dayu.baselibrary.R.layout.item_no_more,
+                parent,
+                false
+            )
+            return ViewHolderEmpty(emptyView)
+        } else {
+            val binding = ItemCardListBinding.inflate(
+                mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater,
+                parent,
+                false
+            )
+            return CardViewHolder(binding)
+        }
     }
 
-    override fun onBindViewHolder(holder: CardViewHolder, position: Int) {
-        val card = cardList[position]
-        holder.bind(card)
+    override fun getItemViewType(position: Int): Int {
+        if (cardList.size == 0) {
+            return VIEW_TYPE_EMPTY
+        } else {
+            return VIEW_TYPE_ITEM
+        }
     }
 
-    override fun getItemCount(): Int = cardList.size
+    override fun getItemCount(): Int {
+        //鍚屾椂杩欓噷涔熼渶瑕佹坊鍔犲垽鏂紝濡傛灉mData.size()涓�0鐨勮瘽锛屽彧寮曞叆涓�涓竷灞�锛屽氨鏄痚mptyView
+        // 閭d箞锛岃繖涓猺ecyclerView鐨刬temCount涓�1
+        if (cardList.size == 0) {
+            return 1
+        }
+        return cardList.size
+    }
+
+    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
+        if (holder is ViewHolderEmpty) {
+            // 绌鸿鍥句笉闇�瑕佺粦瀹氭暟鎹�
+            return
+        }
+        
+        if (holder is CardViewHolder) {
+            val card = cardList[position]
+            holder.bind(card)
+            holder.itemView.setOnClickListener {
+                onItemClickListener?.invoke(card)
+            }
+        }
+    }
+
 
     inner class CardViewHolder(private val binding: ItemCardListBinding) : RecyclerView.ViewHolder(binding.root) {
+
         fun bind(card: SearchCardResult.CardInfo) {
             // 璁剧疆鏁版嵁鏄剧ず锛屾坊鍔犲垽绌哄鐞�
             binding.tvCardNumber.text = "鍗″彿锛�${card.cardNum ?: "鏃�"}"
@@ -55,24 +102,13 @@
             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.tvIdCard.text = "韬唤璇侊細${formatIdCard( card.idCard)}"
+
 
             binding.root.setOnClickListener {
                 onItemClickListener?.invoke(card)
             }
         }
-        
         // 鏍煎紡鍖栬韩浠借瘉鍙凤紝淇濇姢闅愮
         private fun formatIdCard(idCard: String?): String {
             return if (!idCard.isNullOrEmpty() && idCard.length >= 18) {
@@ -83,7 +119,7 @@
                 idCard ?: "鏃�"
             }
         }
-        
+
         // 鏍煎紡鍖栨墜鏈哄彿锛屼繚鎶ら殣绉�
         private fun formatPhone(phone: String?): String {
             return if (!phone.isNullOrEmpty() && phone.length >= 11) {
@@ -94,5 +130,4 @@
                 phone ?: "鏃�"
             }
         }
-    }
-} 
\ No newline at end of file
+} }
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/adapter/SearchListAdapter.kt b/generallibrary/src/main/java/com/dayu/general/adapter/SearchListAdapter.kt
deleted file mode 100644
index d63f6ac..0000000
--- a/generallibrary/src/main/java/com/dayu/general/adapter/SearchListAdapter.kt
+++ /dev/null
@@ -1,108 +0,0 @@
-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
-import com.dayu.general.databinding.ItemUserListBinding
-
-/**
- * Description:
- * Author: zuo
- * Date: 2025/3/10
- */
-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 {
-        val binding = ItemUserListBinding.inflate(LayoutInflater.from(parent.context), parent, false)
-        return UserViewHolder(binding)
-    }
-
-    override fun onBindViewHolder(holder: UserViewHolder, position: Int) {
-        val user = userList[position]
-        holder.bind(user)
-    }
-
-    override fun getItemCount(): Int = userList.size
-
-    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 = "韬唤璇侊細${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 ?: "鏃�"
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/adapter/SearchUserListAdapter.kt b/generallibrary/src/main/java/com/dayu/general/adapter/SearchUserListAdapter.kt
new file mode 100644
index 0000000..5c311e0
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/adapter/SearchUserListAdapter.kt
@@ -0,0 +1,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鐨勮瘽锛屽彧寮曞叆涓�涓竷灞�锛屽氨鏄痚mptyView
+        // 閭d箞锛岃繖涓猺ecyclerView鐨刬temCount涓�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 ?: "鏃�"
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/view/CardRefundDialog.kt b/generallibrary/src/main/java/com/dayu/general/view/CardRefundDialog.kt
new file mode 100644
index 0000000..8e52159
--- /dev/null
+++ b/generallibrary/src/main/java/com/dayu/general/view/CardRefundDialog.kt
@@ -0,0 +1,85 @@
+package com.dayu.general.view
+
+import android.app.Dialog
+import android.content.Context
+import android.os.Bundle
+import android.view.Gravity
+import android.view.WindowManager
+import com.dayu.general.R
+import com.dayu.general.databinding.DialogCardRefundBinding
+
+/**
+ *
+ */
+class CardRefundDialog(context: Context) : Dialog(context) {
+    private var binding: DialogCardRefundBinding? = null
+    private var onConfirmListener: (( String, String) -> Unit)? = null
+    private var username: String? = null
+    private var cardNumber: String? = null
+    private var balance: String? = null
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        binding = DialogCardRefundBinding.inflate(layoutInflater)
+        binding?.root?.let { setContentView(it) }
+
+        // 璁剧疆瀵硅瘽妗嗗搴︿负灞忓箷瀹藉害鐨�80%
+        val window = window
+        val params = window?.attributes
+        params?.width = (context.resources.displayMetrics.widthPixels * 0.85).toInt()
+        params?.gravity = Gravity.CENTER
+
+        // 璁剧疆鑳屾櫙閫忔槑
+        window?.setBackgroundDrawableResource(android.R.color.transparent)
+
+        // 璁剧疆鎸夐挳鐐瑰嚮浜嬩欢
+        binding?.btnCancel?.setOnClickListener {
+            dismiss()
+        }
+
+        binding?.btnConfirm?.setOnClickListener {
+            val refundAmount = binding?.etRefundAmount?.text.toString()
+            val remark = binding?.etRemark?.text.toString()
+            
+            if (refundAmount.isEmpty()) {
+                // TODO: 鏄剧ず閿欒鎻愮ず
+                return@setOnClickListener
+            }
+            
+            onConfirmListener?.invoke(refundAmount, remark)
+            dismiss()
+        }
+
+        // 濡傛灉鏈夐璁剧殑鐢ㄦ埛淇℃伅锛岃缃畠浠�
+        username?.let { username ->
+            cardNumber?.let { cardNumber ->
+                balance?.let { balance ->
+                    setUserInfo(username, cardNumber, balance)
+                }
+            }
+        }
+    }
+
+    override fun show() {
+        super.show()
+        // 娓呯┖杈撳叆妗�
+        binding?.etRefundAmount?.setText("")
+        binding?.etRemark?.setText("")
+    }
+
+    fun setUserInfo(username: String, cardNumber: String, balance: String) {
+        this.username = username
+        this.cardNumber = cardNumber
+        this.balance = balance
+        
+        binding?.apply {
+            tvUsernameValue.text = username
+            tvCardNumberValue.text = cardNumber
+            etBalance.setText(balance+"鍏�")
+        }
+    }
+
+    fun setOnConfirmListener(listener: ( String, String) -> Unit) {
+        onConfirmListener = listener
+    }
+} 
\ No newline at end of file
diff --git a/generallibrary/src/main/java/com/dayu/general/view/CardSearchDialog.kt b/generallibrary/src/main/java/com/dayu/general/view/CardSearchDialog.kt
index cf0d808..8069d09 100644
--- a/generallibrary/src/main/java/com/dayu/general/view/CardSearchDialog.kt
+++ b/generallibrary/src/main/java/com/dayu/general/view/CardSearchDialog.kt
@@ -52,6 +52,14 @@
         }
     }
 
+    override fun show() {
+        super.show()
+        // 娓呯┖杈撳叆妗�
+        binding.etCardNumber.setText("")
+        binding.etClientNumber.setText("")
+        binding.etClientName.setText("")
+    }
+
     /**
      * 璁剧疆鎼滅储鐩戝惉鍣�
      */
diff --git a/generallibrary/src/main/java/com/dayu/general/view/SearchDialog.kt b/generallibrary/src/main/java/com/dayu/general/view/SearchDialog.kt
index 0f82113..fc6b280 100644
--- a/generallibrary/src/main/java/com/dayu/general/view/SearchDialog.kt
+++ b/generallibrary/src/main/java/com/dayu/general/view/SearchDialog.kt
@@ -52,6 +52,14 @@
         }
     }
 
+    override fun show() {
+        super.show()
+        // 娓呯┖杈撳叆妗�
+        binding.etFarmerId.setText("")
+        binding.etFarmerName.setText("")
+        binding.etCardNumber.setText("")
+    }
+
     /**
      * 璁剧疆鎼滅储鐩戝惉鍣�
      */
diff --git a/generallibrary/src/main/res/layout/activity_card_list.xml b/generallibrary/src/main/res/layout/activity_card_list.xml
index 5a14bb8..cea652a 100644
--- a/generallibrary/src/main/res/layout/activity_card_list.xml
+++ b/generallibrary/src/main/res/layout/activity_card_list.xml
@@ -5,7 +5,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
-    tools:context=".activity.CardListActivity">
+    tools:context=".activity.SearchCardListActivity">
 
     <com.dayu.baselibrary.view.TitleBar
         android:id="@+id/title_bar"
@@ -16,30 +16,39 @@
         app:leftImage="@mipmap/icon_back"
         app:rightImage="@mipmap/icon_search" />
 
-    <com.scwang.smart.refresh.layout.SmartRefreshLayout
-        android:id="@+id/refresh_layout"
+    <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        app:srlAccentColor="@color/colorPrimary"
-        app:srlEnablePreviewInEditMode="true">
+        android:layout_height="0dp"
+        android:layout_weight="1">
 
-        <com.scwang.smart.refresh.header.ClassicsHeader
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
-
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/recycler_view"
+        <com.scwang.smart.refresh.layout.SmartRefreshLayout
+            android:id="@+id/refresh_layout"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
-            android:paddingTop="8dp"
-            android:paddingBottom="8dp"
-            android:clipToPadding="false"
-            android:overScrollMode="never" />
+            app:srlAccentColor="@color/colorPrimary"
+            app:srlEnablePreviewInEditMode="true">
 
-        <com.scwang.smart.refresh.footer.ClassicsFooter
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
+            <com.scwang.smart.refresh.header.ClassicsHeader
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
 
-    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/recycler_view"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:paddingTop="8dp"
+                android:paddingBottom="8dp"
+                android:clipToPadding="false"
+                android:overScrollMode="never" />
+
+            <com.scwang.smart.refresh.footer.ClassicsFooter
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+
+        </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+
+
+
+    </FrameLayout>
 
 </LinearLayout> 
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/activity_search_user_ge.xml b/generallibrary/src/main/res/layout/activity_search_user_ge.xml
index 85198ca..8eae170 100644
--- a/generallibrary/src/main/res/layout/activity_search_user_ge.xml
+++ b/generallibrary/src/main/res/layout/activity_search_user_ge.xml
@@ -16,31 +16,35 @@
         app:leftImage="@mipmap/icon_back"
         app:rightImage="@mipmap/icon_search"/>
 
-
-    <com.scwang.smart.refresh.layout.SmartRefreshLayout
-        android:id="@+id/refreshLayout"
+    <FrameLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:layout_below="@+id/titleBar">
+        android:layout_height="0dp"
+        android:layout_weight="1">
 
-        <com.scwang.smart.refresh.header.ClassicsHeader
+        <com.scwang.smart.refresh.layout.SmartRefreshLayout
+            android:id="@+id/refreshLayout"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
-
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/recyclerView"
-            android:layout_width="match_parent"
-
             android:layout_height="match_parent"
-            android:background="@color/base_list_bg"
-            android:overScrollMode="never"
-            android:padding="10dp" />
+            android:layout_below="@+id/titleBar">
 
-        <com.scwang.smart.refresh.footer.ClassicsFooter
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
-    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+            <com.scwang.smart.refresh.header.ClassicsHeader
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/recyclerView"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:background="@color/base_list_bg"
+                android:overScrollMode="never"
+                android:padding="10dp" />
+
+            <com.scwang.smart.refresh.footer.ClassicsFooter
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+        </com.scwang.smart.refresh.layout.SmartRefreshLayout>
 
 
+    </FrameLayout>
 
 </LinearLayout>
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/dialog_card_refund.xml b/generallibrary/src/main/res/layout/dialog_card_refund.xml
new file mode 100644
index 0000000..5996b2c
--- /dev/null
+++ b/generallibrary/src/main/res/layout/dialog_card_refund.xml
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/search_dialog_bg"
+    android:padding="20dp">
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="鎸傚け纭"
+        android:textColor="@color/black"
+        android:textSize="20sp"
+        android:textStyle="bold"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <View
+        android:id="@+id/divider"
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:layout_marginTop="12dp"
+        android:background="#E0E0E0"
+        app:layout_constraintTop_toBottomOf="@id/tv_title" />
+
+    <LinearLayout
+        android:id="@+id/layoutUsername"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:gravity="center_vertical"
+        android:orientation="horizontal"
+        app:layout_constraintTop_toBottomOf="@id/divider">
+
+        <TextView
+            android:id="@+id/tvUsername"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="鐢ㄦ埛鍚嶏細"
+            android:textColor="#666666"
+            android:textSize="14sp" />
+
+        <TextView
+            android:id="@+id/tvUsernameValue"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="5dp"
+            android:layout_weight="1"
+            android:padding="5dp"
+            android:textColor="@color/black"
+            android:textSize="15sp" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/layoutCardNumber"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="5dp"
+        android:gravity="center_vertical"
+        android:orientation="horizontal"
+        app:layout_constraintTop_toBottomOf="@id/layoutUsername">
+
+        <TextView
+            android:id="@+id/tvCardNumber"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="鍗�    鍙凤細"
+            android:textColor="#666666"
+            android:textSize="14sp" />
+
+        <TextView
+            android:id="@+id/tvCardNumberValue"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="5dp"
+            android:layout_weight="1"
+            android:padding="5dp"
+            android:textColor="@color/black"
+            android:textSize="15sp" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/layoutBalance"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="5dp"
+        android:gravity="center_vertical"
+        android:orientation="horizontal"
+        app:layout_constraintTop_toBottomOf="@id/layoutCardNumber">
+
+        <TextView
+            android:id="@+id/tvBalance"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="浣�    棰濓細"
+            android:textColor="#666666"
+            android:textSize="14sp" />
+
+        <TextView
+            android:id="@+id/etBalance"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:padding="5dp"
+            android:singleLine="true"
+            android:layout_marginStart="5dp"
+            android:textColor="@color/black"
+            android:textSize="15sp"
+            app:layout_constraintTop_toBottomOf="@id/tvBalance" />
+    </LinearLayout>
+
+    <TextView
+        android:id="@+id/tvRefundAmount"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="14dp"
+        android:text="閫�杩橀噾棰�"
+        android:textColor="#666666"
+        android:textSize="14sp"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/layoutBalance" />
+
+    <EditText
+        android:id="@+id/etRefundAmount"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="6dp"
+        android:background="@drawable/edit_text_bg"
+        android:hint="璇疯緭鍏ラ��杩橀噾棰�(閫夊~)"
+        android:inputType="numberDecimal"
+        android:padding="12dp"
+        android:singleLine="true"
+        android:textColorHint="#BBBBBB"
+        android:textSize="15sp"
+        app:layout_constraintTop_toBottomOf="@id/tvRefundAmount" />
+
+    <TextView
+        android:id="@+id/tvRemark"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="14dp"
+        android:text="澶囨敞"
+        android:textColor="#666666"
+        android:textSize="14sp"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/etRefundAmount" />
+
+    <EditText
+        android:id="@+id/etRemark"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="6dp"
+        android:background="@drawable/edit_text_bg"
+        android:hint="璇疯緭鍏ュ娉�(閫夊~)"
+        android:inputType="textMultiLine"
+        android:minLines="2"
+        android:padding="12dp"
+        android:textColorHint="#BBBBBB"
+        android:textSize="15sp"
+        app:layout_constraintTop_toBottomOf="@id/tvRemark" />
+
+    <Button
+        android:id="@+id/btnCancel"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="24dp"
+        android:layout_marginEnd="6dp"
+        android:background="@drawable/cancel_button_ripple"
+        android:clickable="true"
+        android:focusable="true"
+        android:paddingTop="10dp"
+        android:paddingBottom="10dp"
+        android:stateListAnimator="@null"
+        android:text="鍙栨秷"
+        android:textColor="#666666"
+        android:textSize="15sp"
+        app:layout_constraintEnd_toStartOf="@id/btnConfirm"
+        app:layout_constraintHorizontal_chainStyle="packed"
+        app:layout_constraintHorizontal_weight="1"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/etRemark" />
+
+    <Button
+        android:id="@+id/btnConfirm"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="6dp"
+        android:background="@drawable/search_button_ripple"
+        android:clickable="true"
+        android:elevation="2dp"
+        android:focusable="true"
+        android:paddingTop="12dp"
+        android:paddingBottom="12dp"
+        android:stateListAnimator="@null"
+        android:text="纭畾"
+        android:textColor="@android:color/white"
+        android:textSize="16sp"
+        android:textStyle="bold"
+        app:layout_constraintBaseline_toBaselineOf="@id/btnCancel"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_weight="1"
+        app:layout_constraintStart_toEndOf="@id/btnCancel" />
+
+</androidx.constraintlayout.widget.ConstraintLayout> 
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/fragment_card.xml b/generallibrary/src/main/res/layout/fragment_card.xml
index 338af60..fbc41d1 100644
--- a/generallibrary/src/main/res/layout/fragment_card.xml
+++ b/generallibrary/src/main/res/layout/fragment_card.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/white">
@@ -12,7 +13,8 @@
         android:layout_height="@dimen/dimen_title_height"
         android:background="@color/title_bar_bg"
         android:elevation="4dp"
-        app:centerText="鍒跺崱" />
+        app:centerText="鍒跺崱"
+        tools:ignore="MissingConstraints" />
 
     <ScrollView
         android:layout_width="match_parent"
@@ -24,20 +26,20 @@
         <androidx.constraintlayout.widget.ConstraintLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:padding="16dp">
+            android:padding="12dp">
 
             <androidx.cardview.widget.CardView
                 android:id="@+id/home_newCard"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="8dp"
-                android:layout_marginTop="16dp"
-                android:layout_marginEnd="8dp"
+                android:layout_marginStart="6dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginEnd="6dp"
                 android:clickable="true"
                 android:focusable="true"
                 android:foreground="?android:attr/selectableItemBackground"
-                app:cardCornerRadius="12dp"
-                app:cardElevation="4dp"
+                app:cardCornerRadius="10dp"
+                app:cardElevation="3dp"
                 app:layout_constraintEnd_toStartOf="@+id/home_redCard"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent">
@@ -47,21 +49,21 @@
                     android:layout_height="wrap_content"
                     android:gravity="center"
                     android:orientation="vertical"
-                    android:padding="16dp">
+                    android:padding="12dp">
 
                     <ImageView
-                        android:layout_width="70dp"
-                        android:layout_height="70dp"
+                        android:layout_width="55dp"
+                        android:layout_height="55dp"
                         android:src="@drawable/home_add" />
 
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:layout_marginTop="8dp"
+                        android:layout_marginTop="6dp"
                         android:gravity="center"
                         android:text="寮�鍗�"
                         android:textColor="@color/text_selecter_color"
-                        android:textSize="@dimen/home_text_size" />
+                        android:textSize="14sp" />
                 </LinearLayout>
             </androidx.cardview.widget.CardView>
 
@@ -69,15 +71,15 @@
                 android:id="@+id/home_recharge"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="8dp"
-                android:layout_marginTop="16dp"
-                android:layout_marginEnd="8dp"
+                android:layout_marginStart="6dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginEnd="6dp"
                 android:clickable="true"
                 android:focusable="true"
                 android:foreground="?android:attr/selectableItemBackground"
                 android:visibility="gone"
-                app:cardCornerRadius="12dp"
-                app:cardElevation="4dp"
+                app:cardCornerRadius="10dp"
+                app:cardElevation="3dp"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent">
@@ -87,21 +89,21 @@
                     android:layout_height="wrap_content"
                     android:gravity="center"
                     android:orientation="vertical"
-                    android:padding="16dp">
+                    android:padding="12dp">
 
                     <ImageView
-                        android:layout_width="70dp"
-                        android:layout_height="70dp"
+                        android:layout_width="55dp"
+                        android:layout_height="55dp"
                         android:src="@drawable/home_recharge" />
 
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:layout_marginTop="8dp"
+                        android:layout_marginTop="6dp"
                         android:gravity="center"
                         android:text="鍏呭��"
                         android:textColor="@color/text_selecter_color"
-                        android:textSize="@dimen/home_text_size" />
+                        android:textSize="14sp" />
                 </LinearLayout>
             </androidx.cardview.widget.CardView>
 
@@ -109,14 +111,14 @@
                 android:id="@+id/home_redCard"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="8dp"
-                android:layout_marginTop="16dp"
-                android:layout_marginEnd="8dp"
+                android:layout_marginStart="6dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginEnd="6dp"
                 android:clickable="true"
                 android:focusable="true"
                 android:foreground="?android:attr/selectableItemBackground"
-                app:cardCornerRadius="12dp"
-                app:cardElevation="4dp"
+                app:cardCornerRadius="10dp"
+                app:cardElevation="3dp"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toEndOf="@+id/home_newCard"
                 app:layout_constraintTop_toTopOf="parent">
@@ -126,21 +128,21 @@
                     android:layout_height="wrap_content"
                     android:gravity="center"
                     android:orientation="vertical"
-                    android:padding="16dp">
+                    android:padding="12dp">
 
                     <ImageView
-                        android:layout_width="70dp"
-                        android:layout_height="70dp"
+                        android:layout_width="55dp"
+                        android:layout_height="55dp"
                         android:src="@drawable/home_read" />
 
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:layout_marginTop="8dp"
+                        android:layout_marginTop="6dp"
                         android:gravity="center"
                         android:text="璇诲崱"
                         android:textColor="@color/text_selecter_color"
-                        android:textSize="@dimen/home_text_size" />
+                        android:textSize="14sp" />
                 </LinearLayout>
             </androidx.cardview.widget.CardView>
 
@@ -148,14 +150,14 @@
                 android:id="@+id/home_loss"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="8dp"
-                android:layout_marginTop="24dp"
-                android:layout_marginEnd="8dp"
+                android:layout_marginStart="6dp"
+                android:layout_marginTop="16dp"
+                android:layout_marginEnd="6dp"
                 android:clickable="true"
                 android:focusable="true"
                 android:foreground="?android:attr/selectableItemBackground"
-                app:cardCornerRadius="12dp"
-                app:cardElevation="4dp"
+                app:cardCornerRadius="10dp"
+                app:cardElevation="3dp"
                 app:layout_constraintEnd_toStartOf="@+id/home_replacement"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/home_newCard">
@@ -166,21 +168,21 @@
                     android:layout_height="wrap_content"
                     android:gravity="center"
                     android:orientation="vertical"
-                    android:padding="16dp">
+                    android:padding="12dp">
 
                     <ImageView
-                        android:layout_width="70dp"
-                        android:layout_height="70dp"
+                        android:layout_width="55dp"
+                        android:layout_height="55dp"
                         android:src="@drawable/home_report" />
 
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:layout_marginTop="8dp"
+                        android:layout_marginTop="6dp"
                         android:gravity="center"
                         android:text="鎸傚け"
                         android:textColor="@color/text_selecter_color"
-                        android:textSize="@dimen/home_text_size" />
+                        android:textSize="14sp" />
                 </LinearLayout>
             </androidx.cardview.widget.CardView>
 
@@ -191,7 +193,7 @@
                 android:gravity="center"
                 android:text="瑙i櫎鎸傚け"
                 android:textColor="@color/text_selecter_color"
-                android:textSize="@dimen/home_text_size"
+                android:textSize="14sp"
                 android:visibility="gone"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
@@ -200,14 +202,14 @@
                 android:id="@+id/home_replacement"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="8dp"
-                android:layout_marginTop="24dp"
-                android:layout_marginEnd="8dp"
+                android:layout_marginStart="6dp"
+                android:layout_marginTop="16dp"
+                android:layout_marginEnd="6dp"
                 android:clickable="true"
                 android:focusable="true"
                 android:foreground="?android:attr/selectableItemBackground"
-                app:cardCornerRadius="12dp"
-                app:cardElevation="4dp"
+                app:cardCornerRadius="10dp"
+                app:cardElevation="3dp"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toEndOf="@+id/home_loss"
                 app:layout_constraintTop_toBottomOf="@+id/home_redCard">
@@ -217,21 +219,138 @@
                     android:layout_height="wrap_content"
                     android:gravity="center"
                     android:orientation="vertical"
-                    android:padding="16dp">
+                    android:padding="12dp">
 
                     <ImageView
-                        android:layout_width="70dp"
-                        android:layout_height="70dp"
+                        android:layout_width="55dp"
+                        android:layout_height="55dp"
                         android:src="@drawable/home_replacement" />
 
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:layout_marginTop="8dp"
+                        android:layout_marginTop="6dp"
                         android:gravity="center"
                         android:text="琛ュ崱"
                         android:textColor="@color/text_selecter_color"
-                        android:textSize="@dimen/home_text_size" />
+                        android:textSize="14sp" />
+                </LinearLayout>
+            </androidx.cardview.widget.CardView>
+
+            <androidx.cardview.widget.CardView
+                android:id="@+id/home_reverse"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="6dp"
+                android:layout_marginTop="16dp"
+                android:layout_marginEnd="6dp"
+                android:clickable="true"
+                android:focusable="true"
+                android:foreground="?android:attr/selectableItemBackground"
+                app:cardCornerRadius="10dp"
+                app:cardElevation="3dp"
+                app:layout_constraintEnd_toStartOf="@+id/home_deduction"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/home_replacement">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:gravity="center"
+                    android:orientation="vertical"
+                    android:padding="12dp">
+
+                    <ImageView
+                        android:layout_width="55dp"
+                        android:layout_height="55dp"
+                        android:src="@drawable/home_system" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="6dp"
+                        android:gravity="center"
+                        android:text="鍐叉"
+                        android:textColor="@color/text_selecter_color"
+                        android:textSize="14sp" />
+                </LinearLayout>
+            </androidx.cardview.widget.CardView>
+
+            <androidx.cardview.widget.CardView
+                android:id="@+id/home_deduction"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="6dp"
+                android:layout_marginTop="16dp"
+                android:layout_marginEnd="6dp"
+                android:clickable="true"
+                android:focusable="true"
+                android:foreground="?android:attr/selectableItemBackground"
+                app:cardCornerRadius="10dp"
+                app:cardElevation="3dp"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toEndOf="@+id/home_reverse"
+                app:layout_constraintTop_toBottomOf="@+id/home_replacement">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:gravity="center"
+                    android:orientation="vertical"
+                    android:padding="12dp">
+
+                    <ImageView
+                        android:layout_width="55dp"
+                        android:layout_height="55dp"
+                        android:src="@drawable/home_system" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="6dp"
+                        android:gravity="center"
+                        android:text="琛ユ墸"
+                        android:textColor="@color/text_selecter_color"
+                        android:textSize="14sp" />
+                </LinearLayout>
+            </androidx.cardview.widget.CardView>
+
+            <androidx.cardview.widget.CardView
+                android:id="@+id/home_rewrite"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="6dp"
+                android:layout_marginTop="16dp"
+                android:layout_marginEnd="6dp"
+                android:clickable="true"
+                android:focusable="true"
+                android:foreground="?android:attr/selectableItemBackground"
+                app:cardCornerRadius="10dp"
+                app:cardElevation="3dp"
+                app:layout_constraintEnd_toStartOf="@+id/home_manage"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/home_reverse">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:gravity="center"
+                    android:orientation="vertical"
+                    android:padding="12dp">
+
+                    <ImageView
+                        android:layout_width="55dp"
+                        android:layout_height="55dp"
+                        android:src="@drawable/home_system" />
+
+                    <TextView
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="6dp"
+                        android:gravity="center"
+                        android:text="鍙嶅啓"
+                        android:textColor="@color/text_selecter_color"
+                        android:textSize="14sp" />
                 </LinearLayout>
             </androidx.cardview.widget.CardView>
 
@@ -239,19 +358,19 @@
                 android:id="@+id/home_manage"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:layout_marginStart="8dp"
-                android:layout_marginTop="24dp"
-                android:layout_marginEnd="8dp"
-                android:layout_marginBottom="16dp"
+                android:layout_marginStart="6dp"
+                android:layout_marginTop="16dp"
+                android:layout_marginEnd="6dp"
+                android:layout_marginBottom="12dp"
                 android:clickable="true"
                 android:focusable="true"
                 android:foreground="?android:attr/selectableItemBackground"
-                app:cardCornerRadius="12dp"
-                app:cardElevation="4dp"
+                app:cardCornerRadius="10dp"
+                app:cardElevation="3dp"
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/home_loss"
+                app:layout_constraintStart_toEndOf="@+id/home_rewrite"
+                app:layout_constraintTop_toBottomOf="@+id/home_deduction"
                 app:layout_constraintVertical_bias="0.0">
 
                 <LinearLayout
@@ -259,75 +378,24 @@
                     android:layout_height="wrap_content"
                     android:gravity="center"
                     android:orientation="vertical"
-                    android:padding="16dp">
+                    android:padding="12dp">
 
                     <ImageView
-                        android:layout_width="70dp"
-                        android:layout_height="70dp"
+                        android:layout_width="55dp"
+                        android:layout_height="55dp"
                         android:src="@drawable/home_system" />
 
                     <TextView
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
-                        android:layout_marginTop="8dp"
+                        android:layout_marginTop="6dp"
                         android:gravity="center"
                         android:text="鍒朵綔绠$悊鍗�"
                         android:textColor="@color/text_selecter_color"
-                        android:textSize="@dimen/home_text_size" />
+                        android:textSize="14sp" />
                 </LinearLayout>
             </androidx.cardview.widget.CardView>
 
-            <TextView
-                android:id="@+id/home_parameter"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:gravity="center"
-                android:text="鍙傛暟璁剧疆"
-                android:textColor="@color/text_selecter_color"
-                android:textSize="@dimen/home_text_size"
-                android:visibility="gone"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toTopOf="parent" />
-
-            <androidx.cardview.widget.CardView
-                android:id="@+id/home_my"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_marginStart="8dp"
-                android:layout_marginTop="24dp"
-                android:layout_marginEnd="8dp"
-                android:clickable="true"
-                android:focusable="true"
-                android:foreground="?android:attr/selectableItemBackground"
-                android:visibility="gone"
-                app:cardCornerRadius="12dp"
-                app:cardElevation="4dp"
-                app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/home_admin">
-
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:gravity="center"
-                    android:orientation="vertical"
-                    android:padding="16dp">
-
-                    <ImageView
-                        android:layout_width="70dp"
-                        android:layout_height="70dp"
-                        android:src="@drawable/home_my" />
-
-                    <TextView
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginTop="8dp"
-                        android:gravity="center"
-                        android:text="涓汉涓績"
-                        android:textColor="@color/text_selecter_color"
-                        android:textSize="@dimen/home_text_size" />
-                </LinearLayout>
-            </androidx.cardview.widget.CardView>
         </androidx.constraintlayout.widget.ConstraintLayout>
     </ScrollView>
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/item_card_list.xml b/generallibrary/src/main/res/layout/item_card_list.xml
index c470e47..8598844 100644
--- a/generallibrary/src/main/res/layout/item_card_list.xml
+++ b/generallibrary/src/main/res/layout/item_card_list.xml
@@ -24,7 +24,7 @@
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
-                android:text="鍗″彿锛�5323281010060000"
+                android:text="鍗″彿锛�"
                 android:textColor="@color/black"
                 android:textSize="16sp"
                 android:textStyle="bold" />
@@ -33,51 +33,36 @@
                 android:id="@+id/tv_card_status"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:text="鐘舵�侊細姝e父"
+                android:text="鐘舵�侊細"
                 android:textColor="@color/green"
                 android:textSize="14sp" />
-        </LinearLayout>
-
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="8dp"
-            android:orientation="horizontal">
-
-            <TextView
-                android:id="@+id/tv_card_type"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_weight="1"
-                android:text="鍗$被鍨嬶細鍐滄埛鍗�"
-                android:textColor="@color/black"
-                android:textSize="14sp" />
-
-            <TextView
-                android:id="@+id/tv_card_balance"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="浣欓锛�90.97 鍏�"
-                android:textColor="@color/black"
-                android:textSize="14sp"
-                android:textStyle="bold" />
         </LinearLayout>
 
         <TextView
             android:id="@+id/tv_client_name"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginTop="8dp"
-            android:text="濮撳悕锛氭潕鍥�"
+            android:layout_marginTop="4dp"
+            android:text="濮撳悕锛�"
             android:textColor="@color/black"
             android:textSize="14sp" />
+
+        <TextView
+            android:id="@+id/tv_card_type"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="4dp"
+            android:text="鍗$被鍨嬶細"
+            android:textColor="@color/black"
+            android:textSize="14sp" />
+
 
         <TextView
             android:id="@+id/tv_client_num"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginTop="4dp"
-            android:text="瀹㈡埛缂栧彿锛�281010060002"
+            android:text="瀹㈡埛缂栧彿锛�"
             android:textColor="@color/black"
             android:textSize="14sp" />
 
@@ -86,19 +71,36 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginTop="4dp"
-            android:text="鐢佃瘽锛�156****4561"
+            android:text="鐢佃瘽锛�"
             android:textColor="@color/black"
             android:textSize="14sp" />
 
-        <TextView
-            android:id="@+id/tv_id_card"
+        <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginTop="4dp"
-            android:text="韬唤璇侊細3402****1245"
-            android:textColor="@color/black"
-            android:textSize="14sp"
-            android:visibility="visible" />
+            android:orientation="horizontal">
+
+            <TextView
+                android:id="@+id/tv_id_card"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+
+                android:layout_weight="1"
+                android:text="韬唤璇侊細"
+                android:textColor="@color/black"
+                android:textSize="14sp"
+                android:visibility="visible" />
+
+            <TextView
+                android:id="@+id/tv_card_balance"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="浣欓锛氬厓"
+                android:textColor="@color/black"
+                android:textSize="14sp"
+                android:textStyle="bold" />
+        </LinearLayout>
 
     </LinearLayout>
 </androidx.cardview.widget.CardView> 
\ No newline at end of file
diff --git a/generallibrary/src/main/res/layout/item_user_list.xml b/generallibrary/src/main/res/layout/item_user_list.xml
index f2e4eab..1fa1abb 100644
--- a/generallibrary/src/main/res/layout/item_user_list.xml
+++ b/generallibrary/src/main/res/layout/item_user_list.xml
@@ -62,14 +62,30 @@
             android:textColor="#666666"
             android:layout_marginBottom="4dp"/>
 
-        <TextView
-            android:id="@+id/tvAddress"
+        <LinearLayout
+            android:id="@+id/llAddress"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:textSize="14sp"
-            android:textColor="#666666"
+            android:orientation="horizontal"
             android:layout_marginBottom="4dp"
-            android:visibility="gone"/>
+            android:visibility="gone">
+
+            <TextView
+                android:id="@+id/tvAddressLabel"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="鍦板潃锛�"
+                android:textSize="14sp"
+                android:textColor="#666666"/>
+
+            <TextView
+                android:id="@+id/tvAddressValue"
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:layout_height="wrap_content"
+                android:textSize="14sp"
+                android:textColor="#666666"/>
+        </LinearLayout>
 
         <TextView
             android:id="@+id/tvOperateDate"

--
Gitblit v1.8.0