From bd4891e2fd6b773cbb0ec387f6db4bc944fdf51a Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期一, 31 三月 2025 18:07:51 +0800 Subject: [PATCH] feat(generallibrary): 添加卡片列表功能并优化登录逻辑 --- generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 208 insertions(+), 1 deletions(-) diff --git a/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt b/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt index bfd1ded..43874cd 100644 --- a/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt +++ b/generallibrary/src/main/java/com/dayu/general/activity/CardListActivity.kt @@ -1,9 +1,216 @@ package com.dayu.general.activity -class CardListActivity:BaseActivity() { +import android.os.Bundle +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.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.scwang.smart.refresh.layout.api.RefreshLayout +import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener +/** + * @author: zuo + * @date: 2023/3/31 + * @description: 鍗$墖鍒楄〃鐣岄潰 + */ +class CardListActivity : BaseActivity() { + var binding: ActivityCardListBinding? = null + private var cardAdapter: CardListAdapter? = null + var searchDialog: CardSearchDialog? = null + + // 鍒嗛〉鐩稿叧鍙橀噺 + private var currentPage = 1 + private val pageSize = 20 + private var hasMoreData = true + + // 淇濆瓨褰撳墠鎼滅储鏉′欢 + private var currentCardNumber = "" + private var currentClientNumber = "" + private var currentClientName = "" + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityCardListBinding.inflate(layoutInflater) + setContentView(binding?.root) + initView() + setupRecyclerView() + setupRefreshLayout() + } + fun initView() { + searchDialog = CardSearchDialog(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) { + // 淇濆瓨褰撳墠鎼滅储鏉′欢 + currentCardNumber = cardNumber + currentClientNumber = clientNumber + currentClientName = clientName + + // 閲嶇疆鍒嗛〉鐘舵�� + currentPage = 1 + hasMoreData = true + + // 鎵ц鎼滅储 + searchCards(cardNumber, clientNumber, clientName, true) + } + }) + binding?.titleBar?.setOnItemclickListner(ClickType_RIGHT_IMAGE) { + // 鏄剧ず鎼滅储瀵硅瘽妗� + searchDialog?.show() + } + } + private fun setupRecyclerView() { + cardAdapter = CardListAdapter() + binding?.recyclerView?.apply { + layoutManager = LinearLayoutManager(this@CardListActivity) + adapter = cardAdapter + } + + // 璁剧疆鍒楄〃椤圭偣鍑讳簨浠� + cardAdapter?.setOnItemClickListener { card -> + // 澶勭悊鍗$墖鐐瑰嚮浜嬩欢 + ToastUtil.show("宸查�夋嫨鍗$墖锛�${card.cardNum}") + // 杩欓噷鍙互娣诲姞璺宠浆鍒板崱鐗囪鎯呴〉闈㈢殑閫昏緫 + // val intent = Intent(this, CardDetailActivity::class.java) + // intent.putExtra("cardNum", card.cardNum) + // startActivity(intent) + } + } + + private fun setupRefreshLayout() { + binding?.refreshLayout?.apply { + // 璁剧疆鍒锋柊鍜屽姞杞芥洿澶氱洃鍚櫒 + setOnRefreshLoadMoreListener(object : OnRefreshLoadMoreListener { + override fun onRefresh(refreshLayout: RefreshLayout) { + // 閲嶇疆椤电爜骞跺埛鏂版暟鎹� + currentPage = 1 + hasMoreData = true + searchCards(currentCardNumber, currentClientNumber, currentClientName, true) + } + + override fun onLoadMore(refreshLayout: RefreshLayout) { + // 濡傛灉杩樻湁鏇村鏁版嵁锛屽姞杞戒笅涓�椤� + if (hasMoreData) { + currentPage++ + searchCards(currentCardNumber, currentClientNumber, currentClientName, false) + } else { + // 瀹屾垚鍔犺浇骞舵彁绀烘病鏈夋洿澶氭暟鎹� + refreshLayout.finishLoadMore(500, true, false) + ToastUtil.show("娌℃湁鏇村鏁版嵁浜�") + } + } + }) + } + } + + /** + * 鏍规嵁鍗″彿銆佸鎴风紪鍙峰拰瀹㈡埛濮撳悕鎼滅储鍗$墖 + * + * 姝ゅ嚱鏁版瀯寤轰竴涓弬鏁版槧灏勶紝鏍规嵁鎻愪緵鐨勫崱鍙枫�佸鎴风紪鍙峰拰瀹㈡埛濮撳悕鏉ユ悳绱㈠崱鐗� + * 瀹冧粎鍖呭惈鏈夋晥鐨勩�侀潪绌虹殑鎼滅储鍙傛暟锛屼互纭繚鎼滅储璇锋眰鐨勫噯纭�у拰鏁堢巼 + * + * @param cardNumber 鍗″彿 + * @param clientNumber 瀹㈡埛缂栧彿 + * @param clientName 瀹㈡埛濮撳悕 + * @param isRefresh 鏄惁涓哄埛鏂版搷浣� + */ + private fun searchCards(cardNumber: String, clientNumber: String, clientName: String, isRefresh: Boolean = true) { + val map = mutableMapOf<String, Any>() + + if (cardNumber.isNotEmpty()) { + map["cardNum"] = cardNumber + } + + if (clientNumber.isNotEmpty()) { + map["clientNum"] = clientNumber + } + + if (clientName.isNotEmpty()) { + map["clientName"] = clientName + } + + // 娣诲姞鍒嗛〉鍙傛暟 + map["pageCurr"] = currentPage + map["pageSize"] = pageSize + + // 浣跨敤姝g‘鐨勭被鍨嬪弬鏁� + ApiManager.getInstance().requestGetLoading( + this, + "sell/clientcard/getcards", + SearchCardResult::class.java, + map, + object : SubscriberListener<BaseResponse<SearchCardResult>>() { + override fun onNext(t: BaseResponse<SearchCardResult>) { + // 瀹屾垚鍒锋柊鎴栧姞杞藉姩浣� + finishRefreshOrLoad(isRefresh) + + if (t.success) { + // 澶勭悊鎼滅储鎴愬姛鐨勬儏鍐� + val result = t.content + if (result != null) { + // 澶勭悊鎼滅储缁撴灉 + if (result.obj.isNotEmpty()) { + // 鏍规嵁鏄惁涓哄埛鏂版搷浣滃喅瀹氬浣曟洿鏂版暟鎹� + if (isRefresh) { + cardAdapter?.setData(result.obj) + } else { + cardAdapter?.addData(result.obj) + } + + // 鍒ゆ柇鏄惁杩樻湁鏇村鏁版嵁锛氭牴鎹綋鍓嶉〉鐮佸拰鎬婚〉鏁板垽鏂� + hasMoreData = currentPage < result.pageTotal + } else { + if (isRefresh) { + cardAdapter?.setData(emptyList()) + ToastUtil.show("鏈壘鍒板尮閰嶇殑鍗$墖") + } else { + hasMoreData = false + ToastUtil.show("娌℃湁鏇村鏁版嵁浜�") + } + } + } else { + if (isRefresh) { + cardAdapter?.setData(emptyList()) + ToastUtil.show("鏈壘鍒板尮閰嶇殑鍗$墖") + } + } + } else { + // 澶勭悊鎼滅储澶辫触鐨勬儏鍐� + ToastUtil.show(t.msg) + } + } + + override fun onError(e: Throwable?) { + super.onError(e) + // 瀹屾垚鍒锋柊鎴栧姞杞藉姩浣� + finishRefreshOrLoad(isRefresh) + ToastUtil.show("鎼滅储澶辫触: ${e?.message ?: "鏈煡閿欒"}") + } + } + ) + } + + /** + * 瀹屾垚鍒锋柊鎴栧姞杞芥搷浣� + * @param isRefresh 鏄惁涓哄埛鏂版搷浣� + */ + private fun finishRefreshOrLoad(isRefresh: Boolean) { + if (isRefresh) { + binding?.refreshLayout?.finishRefresh(true) + } else { + binding?.refreshLayout?.finishLoadMore(true) + } + } } \ No newline at end of file -- Gitblit v1.8.0