【鸿蒙 HarmonyOS 4.0】解决:搜索无效问题

一、背景

页面包含搜索框和列表,列表默认展示所有数据并具有分页功能。然而,在输入关键字到搜索框时,列表未正确展示搜索结果。

二、功能实现

2.1、原代码及实现效果

import ChargeType from '../../viewModel/ChargeType'
import ChargeModel from '../../model/ChargeModel'@Component
export default struct ChargeList {@State charges:ChargeType[] = []@Link stationId:numberisLoading: boolean = falseisMore: boolean = truecontroller: SearchController = new SearchController()showPanel:()=>voidaboutToAppear(){//加载充电站数据this.chargeInfo('')}build() {Column({space:10}){//搜索Column({space:15}){Text('充电').fontColor(Color.White).fontSize(20).margin({top:30})Search({placeholder:'请输入搜索内容',controller: this.controller}).placeholderColor(Color.Gray).backgroundColor('#F5F5F5').textFont({size:18}).onChange((value: string) => {console.log('搜索的值',value)this.chargeInfo(value)})}.width('100%').height('20%').padding({left:20,right:20}).backgroundColor($r('app.color.charge_header'))//列表List({space:10}){ForEach(this.charges,(item:ChargeType) => {ListItem(){this.chargeItem(item)}.onClick(() =>{console.log('弹出充电桩数据')})})}.width('95%').layoutWeight(1).onReachEnd(() => {if(!this.isLoading && this.isMore){this.isLoading = true// 翻页ChargeModel.pageNo++this.chargeInfo('')}})}.width('100%')}//item项@Builder chargeItem(item:ChargeType){Column({space:12}){Text(item.name).fontWeight(FontWeight.Bold)Row({space:8}){Text(`¥ ${item.pricePerHour}`).fontColor($r('app.color.pile_tanan'))Text('/度').fontColor($r('app.color.limit'))Blank()Text(item.tenantName).fontSize(18).fontColor($r('app.color.pile_tanan'))Blank()Image($r('app.media.fast')).width(20)Text(`闲${item.freePileTotal}`).fontWeight(FontWeight.Bold)Text(`/${item.pileTotal}`)}.width('100%')Row({space:8}){Text(`${item.distance.toFixed(2)}km`)Image($r('app.media.location')).width(20)Image($r('app.media.imgUrl')).width(20)}}.height('100%').backgroundColor('#FFF').height(120).padding(10).borderRadius(20).alignItems(HorizontalAlign.Start)}//调取接口,获取充电站数据async chargeInfo(name){let res:any = await ChargeModel.getStations(name)if(res.responseCode === 200){let chargeRes = JSON.parse(res.result.toString())if(chargeRes.code == 0){this.charges = this.charges.concat(chargeRes.data.List)console.log('列表数据charges',this.charges.length,this.charges)this.isLoading = falseif(!chargeRes.data.List || chargeRes.data.List.length === 0){this.isMore = false}}}}
}

说明:

①页面初次加载是当前页5条数据, 翻页后加载了所有数据7条

②搜索框输入关键字:x,列表仍然展示的所有数据7条,未展示搜索后的数据

2.2、改造原代码,解决搜索失效问题

分析问题:

这个问题可能出在搜索时未能正确重置 页码值pageNo 和清空原有数据,导致搜索结果未能正确展示在列表中。 

具体操作:

①在 chargeInfo() 方法中增加一个参数来标识是否需要重置 页码值pageNo 和清空原有数据

②在搜索时调用 chargeInfo() 方法时,传入 true 来重置 页码值pageNo 和清空数据

 

2.3、最终效果

说明:

左图为默认状态,右图为搜索结果

①搜索框输入关键字后,列表展示搜索后数据

②未搜索情况下展示默认当前页数据 

为什么名字后面加英文,搜索时也是输入的英文???

因为我使用的电脑模拟器查看的,不能切换中文,只能输入英文,在官网搜索后得到的结果是真机调试可以输入中文,真机我还未做测试😂😂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/519835.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手写分布式配置中心(三)增加实时刷新功能(短轮询)

要实现配置自动实时刷新,需要改造之前的代码。代码在https://gitee.com/summer-cat001/config-center​​​​​​​ 服务端改造 服务端增加一个版本号version,新增配置的时候为1,每次更新配置就加1。 Overridepublic long insertConfigDO(…

【Python刷题】环形链表

问题描述 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&a…

[数据结构]OJ用队列实现栈

225. 用队列实现栈 - 力扣(LeetCode) 官方题解:https://leetcode.cn/problems/implement-stack-using-queues/solutions/432204/yong-dui-lie-shi-xian-zhan-by-leetcode-solution/ 首先我们要知道 栈是一种后进先出的数据结构&#xff0c…

【大模型】Hugging Face下载大模型的相关文件说明

Hugging Face下载大模型文件说明 1.前言 ​ 上图是毛毛张在HuggingFace的官网上的ChatGLM-6B大模型的所有文件,对于初学者来说,对于上面的文件是干什么的很多小伙伴是很迷糊的,根本不知道是干什么的,毛毛张接下来将简单讲述一下上面的每个文件的作用。 2.文件说明 在Hug…

开发利器——C语言必备实用第三方库

​ 对于广大C语言开发者来说,缺乏类似C STL和Boost的库会让开发受制于基础库的匮乏,也因此导致了开发效率的骤降。这也使得例如libevent这类事件库(基础组件库)一时间大红大紫。 今天,码哥给大家带来一款基础库&#…

Python Tkinter GUI 基本概念

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝如果停止,就是低谷&#xf…

ACM题解Day10|总结篇|进制转化,GCD ,LCM ,二分答案

🔥博客介绍: 27dCnc [Cstring中find_first_not_of()函数和find_last_not_of()函数-CSDN博客] 方差,期望 概率 今日打卡: 算法周总结 ACM题解Day3| To Crash or not To Crash,Integer Prefix ,I don’t want to pay for the Late Jar-CSDN博客 第3题:…

【C语言】终の指针(前篇)

个人主页点这里~ 指针初阶点这里~ 指针初阶2.0点这里~ 指针进阶点这里~ 终の指针 一、回调函数二、qsort函数1、整形比较2、结构数据比较①结构体②-> 的使用③结构数据比较 一、回调函数 回调函数就是⼀个通过函数指针调用的函数。 把一个函数的指针作为参数传递给另一…

【JavaEE初阶】 JVM 运行时数据区简介

文章目录 🍃前言🌲堆(线程共享)🎄Java虚拟机栈(线程私有)🎋本地方法栈(线程私有)🌳程序计数器(线程私有)🌴方法…

20个Python函数程序实例

前面介绍的函数太简单了: 以下是 20 个不同的 Python 函数实例 下面深入一点点: 以下是20个稍微深入一点的,使用Python语言定义并调用函数的示例程序: 20个函数实例 简单函数调用 def greet():print("Hello!")greet…

2025张宇考研数学,百度网盘视频课+36讲PDF讲义+真题

张宇老师的课属于幽默生动,会让一个文科生爱上数学,但是有的同学不知道在哪看,可以看一下:2025张宇考研数学全程网盘 docs.qq.com/doc/DTmtOa0Fzc0V3WElI 可以粘贴在浏览器 张宇30讲作为一本基础讲义:和教材…

unity学习(50)——服务器三次注册限制以及数据库化角色信息5--角色信息数据库化收尾

上一节内容结束后确实可以写入文件了,但还有两个问题: 1.一个是players.txt中,每次重启服务器,当注册新账号创建角色时,players.txt之前内容都会清空。 2.players.txt之前已经注册3次的账号,新注册的角色…