HarmonyOS鸿蒙Next中如何监听到List中手指滑动触摸到的item

HarmonyOS鸿蒙Next中如何监听到List中手指滑动触摸到的item 以下代码,只能监听到初次触摸到的item,手指滑动到其他item后监听不到

@Entry
@Component
struct Demo {
  array = ['1', '2', '3', '4']

  build() {
    List() {
      ForEach(this.array, (item: string) => {
        ListItem() {
          Button(item)
        }
        .onTouch(() => {
          console.log(item)
        })
      })
    }
  }
}
3 回复

array长度很小时,List组件高度未超出区域范围,此时并不能真正滑动屏幕。而List高度超出时,屏幕滑动是随着手指动的,触摸到的始终是同一个item。

更多关于HarmonyOS鸿蒙Next中如何监听到List中手指滑动触摸到的item的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,监听List中手指滑动触摸到的item可以通过OnTouchListener实现。首先,为List中的每个item设置OnTouchListener,然后在onTouch方法中处理触摸事件。通过MotionEventgetAction()方法获取触摸动作,如ACTION_DOWNACTION_MOVE等,结合getX()getY()方法获取触摸点的坐标,从而确定触摸到的具体item。此外,可以使用RecyclerViewfindChildViewUnder()方法根据坐标找到对应的item视图。

在HarmonyOS鸿蒙Next中,可以通过ListContainer组件和OnItemTouchListener来监听手指滑动触摸到的item。首先,创建一个ListContainer,然后为其设置OnItemTouchListener。在onItemTouch回调中,通过MotionEvent获取触摸位置,并使用ListContainerfindChildViewUnder方法找到对应的item。最后,处理触摸事件即可。示例代码如下:

listContainer.setOnItemTouchListener(new ListContainer.OnItemTouchListener() {
    @Override
    public boolean onItemTouch(ListContainer listContainer, MotionEvent event) {
        int x = (int) event.getX();
        int y = (int) event.getY();
        Component child = listContainer.findChildViewUnder(x, y);
        if (child != null) {
            // 处理触摸到的item
        }
        return false;
    }
});

这段代码可以监听到手指滑动时触摸到的item,并进行相应处理。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!