HarmonyOS鸿蒙Next多重筛选案例

HarmonyOS鸿蒙Next多重筛选案例 HarmonyOS Next应用开发案例(持续更新中……)

本案例完整代码,请访问:https://gitee.com/harmonyos-cases/cases/tree/master/CommonAppDevelopment/feature/multiplescreening

本案例已上架 HarmonyOS NEXT 开源组件市场,如需获取或移植该案例,可安装此插件。开发者可使用插件获取鸿蒙组件,添加到业务代码中直接编译运行。

介绍

本示例主要介绍多重筛选场景,利用数组方法过滤满足条件的数据,利用LazyForEach实现列表信息的渲染以及刷新。

效果图预览

多重筛选场景效果预览

使用说明

  1. 等待列表数据全部加载完成后,点击筛选类型,展开筛选数据。
  2. 选中想要筛选的数据,点击确认,列表刷新。
  3. 再次点开筛选类型,保留上次筛选的内容,点击重置筛选内容复原,列表数据恢复为未筛选前的数据。

实现思路

本例涉及的关键特性和实现方案如下:

  1. 使用Grid实现筛选条件布局,源码参考 FilterComponent.ets

  2. 使用数组方法对筛选数据进行过滤,得到筛选数据,源码参考 FilterComponent.ets

  3. 得到筛选的数据后根据点击的筛选数据行数,使用has进行if判断看是否满足多重筛选的条件,源码参考 FilterComponent.ets

  4. 使用filter过滤出来符合条件的数据,筛选出来的数组构建一个新的Set,使用Set中的has判断列表中相关数据是否存在,源码参考 SiteListDataSource.ets

  5. 使用深拷贝保留原数据,源码参考 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

3 回复

Harmony os next技术学习资源创作官方合作,不知您是否有兴趣加入鸿蒙生态建设,添砖加瓦,繁荣鸿蒙,有兴趣可以私我:Vxt20250206

更多关于HarmonyOS鸿蒙Next多重筛选案例的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS鸿蒙Next中的多重筛选功能主要依赖于DataAbilityHelperDataAbilityPredicates类来实现。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);

通过greaterThanequalTo方法设置多重条件,query方法执行筛选并返回结果。

回到顶部