You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ItemTouchHelper.SimpleCallback中获取RecyclerView侧滑方向?

解决ItemTouchHelper中获取侧滑方向并控制图标显示的问题

嘿,这个场景我之前做项目时也碰到过,其实在ItemTouchHelper.SimpleCallback里有现成的方式可以判断侧滑方向,进而控制你那左侧编辑图标的显示隐藏,具体可以这么搞:

1. 实时判断滑动方向(滑动过程中控制图标)

在onChildDraw方法里,系统会传入一个dX参数,这个参数的正负就能直接判断当前的滑动方向:

  • dX > 0:表示用户正在右滑(对应你的编辑操作)
  • dX < 0:表示用户正在左滑(对应你的删除操作)

你可以在这个方法里实时更新图标的显示状态,代码示例如下:

@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, 
                        float dX, float dY, int actionState, boolean isCurrentlyActive) {
    super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
    
    // 强转为你自定义的ViewHolder,确保能拿到图标引用
    YourCustomViewHolder customHolder = (YourCustomViewHolder) viewHolder;
    
    // 根据dX判断滑动方向,控制编辑图标显示
    if (dX < 0) {
        // 左滑(删除操作)时隐藏左侧编辑图标
        customHolder.editIcon.setVisibility(View.GONE);
    } else {
        // 右滑或未滑动时显示图标
        customHolder.editIcon.setVisibility(View.VISIBLE);
    }
    
    // 滑动结束时(isCurrentlyActive为false),恢复图标显示状态
    if (!isCurrentlyActive) {
        customHolder.editIcon.setVisibility(View.VISIBLE);
    }
}

2. 滑动完成后判断最终方向(执行对应操作)

如果需要在滑动结束后执行编辑/删除的业务逻辑,可以在onSwiped方法里通过direction参数判断最终的滑动方向:

@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
    YourCustomViewHolder customHolder = (YourCustomViewHolder) viewHolder;
    int position = customHolder.getAdapterPosition();
    
    if (direction == ItemTouchHelper.LEFT) {
        // 左滑完成,执行删除记录的逻辑
        deleteYourRecord(position);
    } else if (direction == ItemTouchHelper.RIGHT) {
        // 右滑完成,执行编辑记录的逻辑
        editYourRecord(position);
    }
    
    // 滑动完成后,记得恢复编辑图标的显示
    customHolder.editIcon.setVisibility(View.VISIBLE);
}

注意事项

  • 确保你的自定义ViewHolder里持有左侧编辑图标的View引用,这样才能在回调方法中直接操作它的显示状态。
  • 一定要在滑动结束后恢复图标的显示,避免滑动完成后图标一直处于隐藏状态。

内容的提问来源于stack exchange,提问作者Vitaly Kalenik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:17:38