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):重构卡片和用户搜索功能 --- README.md | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 109 insertions(+), 0 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 鏁版嵁搴� -- Gitblit v1.8.0