左晓为主开发手持机充值管理机
generallibrary/src/main/java/com/dayu/general/activity/SearchUserListActivity.kt
@@ -44,6 +44,9 @@
        initView()
        setupRecyclerView()
        setupRefreshLayout()
        // 确保Footer初始状态正确
        binding?.refreshLayout?.setEnableLoadMore(true)
    }
@@ -62,6 +65,9 @@
                // 重置分页状态
                currentPage = 1
                hasMoreData = true
                // 重置无更多数据状态
                binding?.refreshLayout?.resetNoMoreData()
                // 执行搜索
                searchUser(farmerId, farmerName, cardNumber, true)
@@ -86,10 +92,7 @@
            // 处理用户点击事件
            // 传递用户信息到开卡界面
            val intent = Intent(this, NewCard2Activity::class.java)
            intent.putExtra("userName", user.name)
            intent.putExtra("idCard", user.idCard)
            intent.putExtra("farmerCode", user.clientNum)
            intent.putExtra("userId", user.id)
            intent.putExtra("clientId", user.clientId)
            startActivity(intent)
        }
@@ -98,12 +101,21 @@
    private fun setupRefreshLayout() {
        binding?.refreshLayout?.apply {
            // 设置Footer跟随功能,确保无更多数据时Footer能正确显示
            setEnableFooterFollowWhenNoMoreData(true)
            // 设置加载更多完成后滚动内容显示新数据
            setEnableScrollContentWhenLoaded(true)
            // 禁用纯滚动模式,确保Footer能正常工作
            setEnableOverScrollDrag(false)
            // 设置刷新和加载更多监听器
            setOnRefreshLoadMoreListener(object : OnRefreshLoadMoreListener {
                override fun onRefresh(refreshLayout: RefreshLayout) {
                    // 重置页码并刷新数据
                    currentPage = 1
                    hasMoreData = true
                    // 重置无更多数据状态
                    refreshLayout.resetNoMoreData()
                    searchUser(currentFarmerId, currentFarmerName, currentCardNumber, true)
                }
@@ -113,9 +125,8 @@
                        currentPage++
                        searchUser(currentFarmerId, currentFarmerName, currentCardNumber, false)
                    } else {
                        // 完成加载并提示没有更多数据
                        refreshLayout.finishLoadMore(500, true, false)
                        ToastUtil.show("没有更多数据了")
                        // 完成加载并显示已到底状态
                        refreshLayout.finishLoadMoreWithNoMoreData()
                    }
                }
            })
@@ -165,9 +176,6 @@
            map,
            object : SubscriberListener<BaseResponse<SearchUserResult>>() {
                override fun onNext(t: BaseResponse<SearchUserResult>) {
                    // 完成刷新或加载动作
                    finishRefreshOrLoad(isRefresh)
                    if (t.success) {
                        // 处理搜索成功的情况
                        val result = t.content
@@ -183,23 +191,42 @@
                                // 判断是否还有更多数据:根据当前页码和总页数判断
                                hasMoreData = currentPage < result.pageTotal
                                // 完成刷新或加载动作
                                if (isRefresh) {
                                    binding?.refreshLayout?.finishRefresh(true)
                                } else {
                                    // 如果没有更多数据了,设置已到底状态
                                    if (!hasMoreData) {
                                        binding?.refreshLayout?.finishLoadMoreWithNoMoreData()
                                    } else {
                                        binding?.refreshLayout?.finishLoadMore(true)
                                    }
                                }
                            } else {
                                if (isRefresh) {
                                    userAdapter?.setData(emptyList())
                                    binding?.refreshLayout?.finishRefresh(true)
                                    ToastUtil.show("未找到匹配的用户")
                                } else {
                                    hasMoreData = false
                                    ToastUtil.show("没有更多数据了")
                                    // 使用finishLoadMoreWithNoMoreData显示已到底状态
                                    binding?.refreshLayout?.finishLoadMoreWithNoMoreData()
                                }
                            }
                        } else {
                            if (isRefresh) {
                                userAdapter?.setData(emptyList())
                                binding?.refreshLayout?.finishRefresh(true)
                                ToastUtil.show("未找到匹配的用户")
                            } else {
                                hasMoreData = false
                                binding?.refreshLayout?.finishLoadMoreWithNoMoreData()
                            }
                        }
                    } else {
                        // 处理搜索失败的情况
                        finishRefreshOrLoad(isRefresh)
                        ToastUtil.show(t.msg)
                    }
                }
@@ -222,7 +249,13 @@
        if (isRefresh) {
            binding?.refreshLayout?.finishRefresh(true)
        } else {
            binding?.refreshLayout?.finishLoadMore(true)
            // 如果没有更多数据,不在这里调用finishLoadMore,由具体逻辑调用finishLoadMoreWithNoMoreData
            // 如果有更多数据,则正常调用finishLoadMore
            if (hasMoreData) {
                binding?.refreshLayout?.finishLoadMore(true)
            }
            // 注意:当hasMoreData为false时,不调用任何finish方法,
            // 因为已经在具体逻辑中调用了finishLoadMoreWithNoMoreData()
        }
    }