HarmonyOS鸿蒙Next多重筛选案例
HarmonyOS鸿蒙Next多重筛选案例 HarmonyOS Next应用开发案例(持续更新中……)
本案例完整代码,请访问:https://gitee.com/harmonyos-cases/cases/tree/master/CommonAppDevelopment/feature/multiplescreening
本案例已上架 HarmonyOS NEXT 开源组件市场,如需获取或移植该案例,可安装此插件。开发者可使用插件获取鸿蒙组件,添加到业务代码中直接编译运行。
介绍
本示例主要介绍多重筛选场景,利用数组方法过滤满足条件的数据,利用LazyForEach实现列表信息的渲染以及刷新。
效果图预览

使用说明
- 等待列表数据全部加载完成后,点击筛选类型,展开筛选数据。
- 选中想要筛选的数据,点击确认,列表刷新。
- 再次点开筛选类型,保留上次筛选的内容,点击重置筛选内容复原,列表数据恢复为未筛选前的数据。
实现思路
本例涉及的关键特性和实现方案如下:
-
使用Grid实现筛选条件布局,源码参考 FilterComponent.ets。
-
使用数组方法对筛选数据进行过滤,得到筛选数据,源码参考 FilterComponent.ets。
-
得到筛选的数据后根据点击的筛选数据行数,使用has进行if判断看是否满足多重筛选的条件,源码参考 FilterComponent.ets。
-
使用filter过滤出来符合条件的数据,筛选出来的数组构建一个新的Set,使用Set中的has判断列表中相关数据是否存在,源码参考 SiteListDataSource.ets。
-
使用深拷贝保留原数据,源码参考 SiteListDataSource.ets。
工程结构 & 模块类型
multiplescreening // har类型
|--components
| |--CustomComponent.ets // 组件层-首页底部tabs
| |--CustonTitle.ets // 组件层-首页顶部标题
| |--FilterComponent.ets // 组件层-筛选组件
| |--InfoCard.ets // 组件层-列表组件
|--model
| |--SiteItemModel.ets // 模型层-场地信息
| |--SiteItemModel.ets // 模型层-筛选以及懒加载数据处理
| |--TabBarModel.ets // 模型层-tabs数据信息
|--view
| |--Index.ets // 视图层-多重筛选主页面
模块依赖
参考资料
更多关于HarmonyOS鸿蒙Next多重筛选案例的实战教程也可以访问 https://www.itying.com/category-93-b0.html
Harmony os next技术学习资源创作官方合作,不知您是否有兴趣加入鸿蒙生态建设,添砖加瓦,繁荣鸿蒙,有兴趣可以私我:Vxt20250206
更多关于HarmonyOS鸿蒙Next多重筛选案例的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS鸿蒙Next中的多重筛选功能主要依赖于DataAbilityHelper和DataAbilityPredicates类来实现。DataAbilityHelper用于与数据源进行交互,而DataAbilityPredicates则用于构建复杂的查询条件。
在实现多重筛选时,可以使用DataAbilityPredicates的链式调用方法来添加多个筛选条件。例如,假设有一个包含用户信息的数据表,需要筛选出年龄在18到30岁之间且性别为“男”的记录,可以按以下方式构建查询条件:
let predicates = new dataAbility.DataAbilityPredicates();
predicates.between("age", 18, 30)
.equalTo("gender", "male");
接着,使用DataAbilityHelper执行查询操作:
let helper = dataAbility.createDataAbilityHelper(context);
let cursor = await helper.query(uri, columns, predicates);
在上述代码中,uri表示数据表的URI,columns指定需要查询的列,predicates则是之前构建的筛选条件。查询结果将返回一个cursor对象,开发者可以从中读取符合条件的数据。
HarmonyOS鸿蒙Next的多重筛选功能支持多种条件组合,包括等于、不等于、大于、小于、区间等,能够满足复杂的查询需求。通过合理使用DataAbilityPredicates,开发者可以高效地实现数据筛选功能。
在HarmonyOS鸿蒙Next中,多重筛选功能可以通过DataAbilityHelper结合DataAbilityPredicates实现。例如,筛选数据库中年龄大于30且城市为“北京”的用户:
DataAbilityHelper helper = DataAbilityHelper.creator(context);
DataAbilityPredicates predicates = new DataAbilityPredicates();
predicates.greaterThan("age", 30)
.equalTo("city", "北京");
Uri uri = Uri.parse("dataability://com.example.userdata/user");
Cursor cursor = helper.query(uri, null, predicates);
通过greaterThan和equalTo方法设置多重条件,query方法执行筛选并返回结果。

