| | |
| | | initView() |
| | | setupRecyclerView() |
| | | setupRefreshLayout() |
| | | |
| | | // 确保Footer初始状态正确 |
| | | binding?.refreshLayout?.setEnableLoadMore(true) |
| | | } |
| | | |
| | | |
| | |
| | | // 重置分页状态 |
| | | currentPage = 1 |
| | | hasMoreData = true |
| | | |
| | | // 重置无更多数据状态 |
| | | binding?.refreshLayout?.resetNoMoreData() |
| | | |
| | | // 执行搜索 |
| | | searchUser(farmerId, farmerName, cardNumber, true) |
| | |
| | | |
| | | 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) |
| | | } |
| | | |
| | |
| | | currentPage++ |
| | | searchUser(currentFarmerId, currentFarmerName, currentCardNumber, false) |
| | | } else { |
| | | // 完成加载并提示没有更多数据 |
| | | refreshLayout.finishLoadMore(500, true, false) |
| | | ToastUtil.show("没有更多数据了") |
| | | // 完成加载并显示已到底状态 |
| | | refreshLayout.finishLoadMoreWithNoMoreData() |
| | | } |
| | | } |
| | | }) |
| | |
| | | map, |
| | | object : SubscriberListener<BaseResponse<SearchUserResult>>() { |
| | | override fun onNext(t: BaseResponse<SearchUserResult>) { |
| | | // 完成刷新或加载动作 |
| | | finishRefreshOrLoad(isRefresh) |
| | | |
| | | if (t.success) { |
| | | // 处理搜索成功的情况 |
| | | val result = t.content |
| | |
| | | |
| | | // 判断是否还有更多数据:根据当前页码和总页数判断 |
| | | 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) |
| | | } |
| | | } |
| | |
| | | if (isRefresh) { |
| | | binding?.refreshLayout?.finishRefresh(true) |
| | | } else { |
| | | binding?.refreshLayout?.finishLoadMore(true) |
| | | // 如果没有更多数据,不在这里调用finishLoadMore,由具体逻辑调用finishLoadMoreWithNoMoreData |
| | | // 如果有更多数据,则正常调用finishLoadMore |
| | | if (hasMoreData) { |
| | | binding?.refreshLayout?.finishLoadMore(true) |
| | | } |
| | | // 注意:当hasMoreData为false时,不调用任何finish方法, |
| | | // 因为已经在具体逻辑中调用了finishLoadMoreWithNoMoreData() |
| | | } |
| | | } |
| | | |