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/activity/SearchUserActivity.kt | 213 +++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 181 insertions(+), 32 deletions(-)
diff --git a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt
index c0fb6d5..b284cea 100644
--- a/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt
+++ b/generallibrary/src/main/java/com/dayu/general/activity/SearchUserActivity.kt
@@ -1,11 +1,19 @@
package com.dayu.general.activity
import android.os.Bundle
-import android.widget.Toast
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.dayu.baselibrary.net.subscribers.SubscriberListener
+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.bean.net.SearchUserResult
import com.dayu.general.databinding.ActivitySearchUserGeBinding
-import com.dayu.general.dialog.SearchDialog
+import com.dayu.general.view.SearchDialog
+import com.dayu.general.net.ApiManager
+import com.dayu.general.net.BaseResponse
+import com.scwang.smart.refresh.layout.api.RefreshLayout
+import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener
/**
* @author: zuo
@@ -15,60 +23,201 @@
class SearchUserActivity : BaseActivity() {
var binding: ActivitySearchUserGeBinding? = null
+ private var userAdapter: SearchListAdapter? = 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 = ""
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySearchUserGeBinding.inflate(layoutInflater)
setContentView(binding?.root)
initView()
+ setupRecyclerView()
+ setupRefreshLayout()
}
fun initView() {
+ searchDialog = SearchDialog(this)
+ searchDialog?.show()
binding?.titleBar?.setOnItemclickListner(ClickType_LEFT_IMAGE) { this.finish() }
+ // 璁剧疆鎼滅储鐩戝惉鍣�
+ searchDialog?.setOnSearchListener(object : SearchDialog.OnSearchListener {
+ override fun onSearch(farmerId: String, farmerName: String, cardNumber: String) {
+ // 淇濆瓨褰撳墠鎼滅储鏉′欢
+ currentFarmerId = farmerId
+ currentFarmerName = farmerName
+ currentCardNumber = cardNumber
+
+ // 閲嶇疆鍒嗛〉鐘舵��
+ currentPage = 1
+ hasMoreData = true
+
+ // 鎵ц鎼滅储
+ searchUser(farmerId, farmerName, cardNumber, true)
+ }
+ })
binding?.titleBar?.setOnItemclickListner(ClickType_RIGHT_IMAGE) {
// 鍒涘缓鎼滅储瀵硅瘽妗�
- val searchDialog = SearchDialog(this)
-
- // 璁剧疆鎼滅储鐩戝惉鍣�
- searchDialog.setOnSearchListener(object : SearchDialog.OnSearchListener {
- override fun onSearch(farmerId: String, farmerName: String, cardNumber: String) {
- // 澶勭悊鎼滅储缁撴灉
- // 杩欓噷鍙槸绀轰緥锛屽疄闄呭簲鐢ㄤ腑鍙兘闇�瑕佽皟鐢ˋPI鎴栨煡璇㈡暟鎹簱
- val message =
- "鎼滅储鏉′欢锛歕n鍐滄埛缂栧彿锛�$farmerId\n鍐滄埛鍚嶇О锛�$farmerName\n鍗″彿锛�$cardNumber"
- // 鎵ц瀹為檯鐨勬悳绱㈤�昏緫
- performSearch(farmerId, farmerName, cardNumber)
- }
- })
// 鏄剧ず瀵硅瘽妗�
- searchDialog.show()
+ searchDialog?.show()
}
}
- /**
- * 鎵ц鎼滅储閫昏緫
- * 杩欓噷鍙槸涓�涓ず渚嬫柟娉曪紝瀹為檯搴旂敤涓渶瑕佹牴鎹叿浣撻渶姹傚疄鐜�
- */
- private fun performSearch(farmerId: String, farmerName: String, cardNumber: String) {
- // 杩欓噷鍙互瀹炵幇瀹為檯鐨勬悳绱㈤�昏緫
- // 渚嬪锛氳皟鐢ˋPI銆佹煡璇㈡暟鎹簱绛�
- // 绀轰緥锛氭瀯寤烘悳绱㈡潯浠�
- val searchConditions = mutableMapOf<String, String>()
+ private fun setupRecyclerView() {
+ userAdapter = SearchListAdapter()
+ binding?.recyclerView?.apply {
+ layoutManager = LinearLayoutManager(this@SearchUserActivity)
+ adapter = userAdapter
+ }
+
+ // 璁剧疆鍒楄〃椤圭偣鍑讳簨浠�
+ userAdapter?.setOnItemClickListener { user ->
+ // 澶勭悊鐢ㄦ埛鐐瑰嚮浜嬩欢
+ ToastUtil.show("宸查�夋嫨鐢ㄦ埛锛�${user.name}")
+ // 杩欓噷鍙互娣诲姞璺宠浆鍒扮敤鎴疯鎯呴〉闈㈢殑閫昏緫
+ // val intent = Intent(this, UserDetailActivity::class.java)
+ // intent.putExtra("userId", user.id)
+ // startActivity(intent)
+ }
+ }
+
+ private fun setupRefreshLayout() {
+ binding?.refreshLayout?.apply {
+ // 璁剧疆鍒锋柊鍜屽姞杞芥洿澶氱洃鍚櫒
+ setOnRefreshLoadMoreListener(object : OnRefreshLoadMoreListener {
+ override fun onRefresh(refreshLayout: RefreshLayout) {
+ // 閲嶇疆椤电爜骞跺埛鏂版暟鎹�
+ currentPage = 1
+ hasMoreData = true
+ searchUser(currentFarmerId, currentFarmerName, currentCardNumber, true)
+ }
+
+ override fun onLoadMore(refreshLayout: RefreshLayout) {
+ // 濡傛灉杩樻湁鏇村鏁版嵁锛屽姞杞戒笅涓�椤�
+ if (hasMoreData) {
+ currentPage++
+ searchUser(currentFarmerId, currentFarmerName, currentCardNumber, false)
+ } else {
+ // 瀹屾垚鍔犺浇骞舵彁绀烘病鏈夋洿澶氭暟鎹�
+ refreshLayout.finishLoadMore(500, true, false)
+ ToastUtil.show("娌℃湁鏇村鏁版嵁浜�")
+ }
+ }
+ })
+ }
+ }
+
+ /**
+ * 鏍规嵁鍐滄皯ID銆佸鍚嶅拰閾惰鍗″彿鎼滅储鐢ㄦ埛
+ *
+ * 姝ゅ嚱鏁版瀯寤轰竴涓弬鏁版槧灏勶紝鏍规嵁鎻愪緵鐨勫啘姘慖D銆佸鍚嶅拰閾惰鍗″彿鏉ユ悳绱㈢敤鎴�
+ * 瀹冧粎鍖呭惈鏈夋晥鐨勩�侀潪绌虹殑鎼滅储鍙傛暟锛屼互纭繚鎼滅储璇锋眰鐨勫噯纭�у拰鏁堢巼
+ *
+ * @param farmerId 鍐滄皯鐨勫敮涓�鏍囪瘑绗�
+ * @param farmerName 鍐滄皯鐨勫鍚�
+ * @param cardNumber 閾惰鍗″彿
+ * @param isRefresh 鏄惁涓哄埛鏂版搷浣�
+ */
+ private fun searchUser(farmerId: String, farmerName: String, cardNumber: String, isRefresh: Boolean = true) {
+ val map = mutableMapOf<String, Any>()
if (farmerId.isNotEmpty()) {
- searchConditions["farmerId"] = farmerId
+ map["clientNum"] = farmerId
}
if (farmerName.isNotEmpty()) {
- searchConditions["farmerName"] = farmerName
+ map["name"] = farmerName
}
if (cardNumber.isNotEmpty()) {
- searchConditions["cardNumber"] = cardNumber
+ map["cardNum"] = cardNumber
}
+
+ // 娣诲姞鍒嗛〉鍙傛暟
+ map["pageCurr"] = currentPage
+ map["pageSize"] = pageSize
- // 鏍规嵁鎼滅储鏉′欢鎵ц鎼滅储
- // 瀹為檯搴旂敤涓紝杩欓噷鍙兘鏄綉缁滆姹傛垨鏁版嵁搴撴煡璇�
- // searchRepository.search(searchConditions)
+ // 浣跨敤姝g‘鐨勭被鍨嬪弬鏁�
+ ApiManager.getInstance().requestGetLoading(
+ this,
+ "sell/client/get",
+ SearchUserResult::class.java,
+ map,
+ object : SubscriberListener<BaseResponse<SearchUserResult>>() {
+ override fun onNext(t: BaseResponse<SearchUserResult>) {
+ // 瀹屾垚鍒锋柊鎴栧姞杞藉姩浣�
+ finishRefreshOrLoad(isRefresh)
+
+ if (t.success) {
+ // 澶勭悊鎼滅储鎴愬姛鐨勬儏鍐�
+ val result = t.content
+ if (result != null) {
+ // 澶勭悊鎼滅储缁撴灉
+ if (result.obj.isNotEmpty()) {
+ // 鏍规嵁鏄惁涓哄埛鏂版搷浣滃喅瀹氬浣曟洿鏂版暟鎹�
+ if (isRefresh) {
+ userAdapter?.setData(result.obj)
+ } else {
+ userAdapter?.addData(result.obj)
+ }
+
+ // 鍒ゆ柇鏄惁杩樻湁鏇村鏁版嵁锛氭牴鎹綋鍓嶉〉鐮佸拰鎬婚〉鏁板垽鏂�
+ hasMoreData = currentPage < result.pageTotal
+ } else {
+ if (isRefresh) {
+ userAdapter?.setData(emptyList())
+ ToastUtil.show("鏈壘鍒板尮閰嶇殑鐢ㄦ埛")
+ } else {
+ hasMoreData = false
+ ToastUtil.show("娌℃湁鏇村鏁版嵁浜�")
+ }
+ }
+ } else {
+ if (isRefresh) {
+ userAdapter?.setData(emptyList())
+ ToastUtil.show("鏈壘鍒板尮閰嶇殑鐢ㄦ埛")
+ }
+ }
+ } else {
+ // 澶勭悊鎼滅储澶辫触鐨勬儏鍐�
+ ToastUtil.show(t.msg)
+ }
+ }
+
+ override fun onError(e: Throwable?) {
+ super.onError(e)
+ // 瀹屾垚鍒锋柊鎴栧姞杞藉姩浣�
+ finishRefreshOrLoad(isRefresh)
+ ToastUtil.show("鎼滅储澶辫触: ${e?.message ?: "鏈煡閿欒"}")
+ }
+ }
+ )
}
-}
\ No newline at end of file
+
+ /**
+ * 瀹屾垚鍒锋柊鎴栧姞杞芥搷浣�
+ * @param isRefresh 鏄惁涓哄埛鏂版搷浣�
+ */
+ private fun finishRefreshOrLoad(isRefresh: Boolean) {
+ if (isRefresh) {
+ binding?.refreshLayout?.finishRefresh(true)
+ } else {
+ binding?.refreshLayout?.finishLoadMore(true)
+ }
+ }
+
+ /**
+ * 澶勭悊鎼滅储缁撴灉
+ */
+
+}
--
Gitblit v1.8.0