赞
踩
本示例分别通过onItemDrop()和onDrop()回调,实现子组件在Grid和List中的子组件位置交换。
使用说明:
Grid() { ... }
.editMode(true) // 设置Grid进入编辑模式
.onItemDragStart((event: ItemDragInfo, itemIndex: number) => { // 设置拖拽过程中显示的图形
this.movedItem = this.appInfoList[itemIndex]; // 记录原位置子组件信息
return this.itemWhileDrag();
})
.onItemDrop((event: ItemDragInfo, itemIndex: number, insertIndex: number, isSuccess: boolean) => { // 拖拽释放时,触发回调
// isSuccess=false时,说明drop的位置在grid外部;insertIndex > length时,说明有新增元素的事件发生
if (isSuccess && insertIndex < this.appInfoList.length) {
this.changeIndex(itemIndex, insertIndex); // 互换子组件index值
}
})
List({ space: LIST_SPACE }) { ForEach(this.appInfoList, (item: AppInfo, index) => { ListItem() { ... } .onDragStart(() => { item.visible = false; // 拖拽时,设置子组件原位置图标不可见 }) .onTouch((event: TouchEvent) => { // 拖拽释放时,记录目标位置子组件index值 if (event.type === TouchType.Down) { this.dragIndex = index; } }) }) } .onDrop((event: DragEvent, extraParams: string) => { let jsonString: JsonObjType = JSON.parse(extraParams) as JsonObjType; // 通过参数extraParams获取原位置子组件index值 this.changeIndex(this.dragIndex, jsonString.insertIndex); // 互换子组件index值 this.appInfoList[jsonString.insertIndex].visible = true; // 完成互换后,设置子组件原位置图标不可见 })
不涉及
dragandexchange // har类型
|---pages
|---|---Launcher.ets // 页面层-方案主页面
|---view
|---|---GridSceneView.ets // 视图层-Grid拖拽页面
|---|---ListSceneView.ets // 视图层-List拖拽页面
|---model
|---|---AppInfo.ets // 模型层-App信息模型
也为了积极培养鸿蒙生态人才,让大家都能学习到鸿蒙开发最新的技术,针对一些在职人员、0基础小白、应届生/计算机专业、鸿蒙爱好者等人群,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线【包含了大厂APP实战项目开发】。
gitee.com/MNxiaona/733GH
https://gitee.com/MNxiaona/733GH
1.基本概念
2.构建第一个ArkTS应用
3.……
gitee.com/MNxiaona/733GH
1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……
1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……
gitee.com/MNxiaona/733GH
gitee.com/MNxiaona/733GH
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。