拖动实现列表重新排序

拖动实现列表重新排序

HarmonyOS
2024-05-26 15:04:36
1979浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
dickhome

本文主要介绍关于对列表通过手动拖动实现重新排序的功能实现。

使用的核心API

组合手势

核心代码解释

1.首先通过实现一个列表

Column() { 
  ForEach(this.myCards, (item: string, index: number) => { 
    this.myCardItem(item, index) 
  }, (item: string) => item); 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

2.绑定组合手势,实现拖动单个Item实现顺序变动。

.gesture(GestureGroup(GestureMode.Sequence, 
  LongPressGesture({ repeat: false }) 
    .onAction((event) => { 
      console.log('===长按开始'); 
      this.startEditMode(index); 
    }) 
    .onActionCancel(() => { 
      console.log('===长按取消'); 
      this.endEditMode(); 
    }) 
    .onActionEnd((event) => { 
      console.log('===长按结束'); 
      this.endEditMode(); 
    }), 
  PanGesture(this.panOption) 
    .onActionStart((event) => { 
      console.log('===拖动开始'); 
      if (this.isEditMode) { 
        this.isMovedCard = true; 
      } 
    }) 
    .onActionUpdate((event) => { 
      console.log('===拖动更新'); 
      if (this.isEditMode) { 
        this.updatePosition(event.offsetY) 
      } 
    }) 
    .onActionEnd(() => { 
      console.log('===拖动结束') 
      if (this.isEditMode) { 
        this.isMovedCard = false; 
        this.endEditMode(); 
      } 
    }) 
))
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.

3.拖动开始和结束的相关代码:

startEditMode(index: number) { 
  if (this.isEditMode) { 
    return; 
  } 
  this.isEditMode = true; 
  this.indexSelected = index; 
  this.curPosStartY = this.itemHeight * this.indexSelected; 
  this.curPosY = this.curPosStartY; 
 
  // 1秒未滑动自动取消排序,因为不会回调"长按结束",也不会回调"滑动结束"。 
  setTimeout(() => { 
    if (!this.isMovedCard) { 
      this.endEditMode(); 
    } 
  }, 1000) 
} 
 
endEditMode() { 
  this.isEditMode = false; 
  this.indexSelected = -1; 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

适配的版本信息

IDE版本:4.0.1.501

SDK版本:4.0.10.8

分享
微博
QQ
微信
回复
2024-05-27 20:05:31


相关问题
HarmonyOS List组件如何实现拖动排序
1162浏览 • 1回复 待解决
HarmonyOS List拖动排序示例
1080浏览 • 1回复 待解决
HarmonyOS Grid拖动排序和长按冲突
1577浏览 • 2回复 待解决
HarmonyOS GridRow 实现拖拽排序
722浏览 • 1回复 待解决
mongodb实现特定值排序查询
3020浏览 • 1回复 待解决
Grid组件中如何实现拖拽排序
303浏览 • 0回复 待解决
HarmonyOS 如何实现Listitem的拖拽排序
1015浏览 • 1回复 待解决
HarmonyOS 如何实现拖动改变ListItem顺序
824浏览 • 1回复 待解决
HarmonyOS list元素拖动换位置的实现
634浏览 • 1回复 待解决
HarmonyOS 如何实现可以拖动的悬浮球
928浏览 • 1回复 待解决
HarmonyOS 列表实现方案
929浏览 • 1回复 待解决
DataAbilityHelper怎么排序?
4844浏览 • 1回复 待解决