如何设置itemTouchHelper选择性滑动?

2024-05-09

所以我在 recyclerview rv 上实现了这个 itemtouchhelper.simple 回调。

现在,在这个 rv 中,我根据内容类型将 2 种布局设置为一行。

因此,当我在 rv 上设置此 touchhelper 时,它正在这两种布局上实现,即使我不想这样做。我只想将该滑动应用于此布局的一种类型。

ItemTouchHelper.SimpleCallback ith = new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.RIGHT) {
        @Override
        public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder viewHolder1) {
            return false;
        }

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
            if(viewHolder.itemView.findViewById(R.id.messageholder_from) != null)
            {
                Log.d("texts", "onSwiped: "+viewHolder.itemView.findViewById(R.id.messageholder_from).findViewById(R.id.crfrom));
            }
            adapter.notifyDataSetChanged();
        }
    };
    new ItemTouchHelper(ith).attachToRecyclerView(rv);

正如您所看到的,我只想在其中包含 messageholder_from child 的行上实现滑动,否则我不想实现滑动。

有什么方法可以删除另一个子 messageholder_to 上的滑动动画和侦听器。

我的应用程序根据消息 ID 显示 to_layout 或 from_layout 。

感谢您的任何帮助。


在你的里面ItemTouchHelper.SimpleCallback,覆盖getSwipeDirs()方法并为您想要禁用滑动的任何行返回 0。

@Override
public int getSwipeDirs(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
    if (viewHolder.itemView.findViewById(R.id.messageholder_from) == null) {
        return 0;
    }

    return super.getSwipeDirs(recyclerView, viewHolder);
}

根据您的应用程序的具体设置方式,可能有更好的方法来检测该情况viewHolder是您想要禁止滑动的类型。例如,也许你可以有

if (viewHolder instanceof WrongKindOfViewHolder)

or

if (viewHolder.isNotSwipeable)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设置itemTouchHelper选择性滑动? 的相关文章

随机推荐

  • 删除所有值比第二高值低 5 倍的记录

    我有一个表 价格 有两个字段 代码 字符 和价格 小数 我需要查找具有相同代码 价格比两个最高价格低 5 倍或更少的所有记录 例如 在这种情况下 我希望删除 id 1 id code price 1 1001 10 2 1001 101 3
  • sql/mysql 过滤器仅包含最大值

    我有一个像这样的结果集 ID name myvalue 1 A1 22 2 A2 22 3 A3 21 4 A4 33 5 A5 33 6 A6 10 7 A7 10 8 A8 10 9 A9 5 我想要的是仅包含包含可用的最高 myval
  • 仅当 id 不存在时插入

    好的 我们有一个 Phonegap 应用程序 其表格设置如下 tblTest actualid INTEGER PRIMARY KEY id INTEGER name TEXT 实际 ID 是设备的唯一 ID 该 ID 维护在服务器端数据库
  • tf.exe 撤消其他用户的挂起更改

    我希望将我们的 TFS 项目迁移到另一台服务器 在执行此操作之前 我想检查所有待处理的更改 撤消它们 或告诉检查人员检查其全部内容 并将项目锁定在旧服务器上 为此 我需要撤消不再存在的非常旧的工作区中的签出 我现在正在寻找使这项工作发挥作用
  • 关于android Sqlite在多进程情况下的安全性

    在我的应用程序中 存在多个进程 并且在每个进程中 我需要访问同一个SQLite数据库 当然 这意味着超过2个线程 所以我不仅担心SQLite的线程安全性 还担心SQLite的线程安全性 还有过程安全 这种情况的一种解决方案是使用内容提供者
  • Magento 1.8 - 高级搜索不起作用

    我在最新版本的 magento 中发现了一个奇怪的错误 高级搜索工具无法正常工作 我做了什么 安装 magento 的新副本 在管理页面添加了一个名为 测试 1 的产品 重新索引全部 清除所有缓存 At the frontend page
  • 如何将故事板连接到视图控制器

    在新的 xcode 5 中 如何在界面生成器中使用下拉菜单将故事板视图控制器连接到类 现在这是如何完成的 除非我误解了你的要求 否则它仍然存在 以下是将自定义视图控制器类分配给视图控制器的步骤 在左侧场景列表中选择您的视图控制器 选择右侧的
  • 使用 javascript 更改整个 CSS 类的样式

    有没有办法使用 javascript 更改 CSS 类的属性 p class fool p
  • SSL 握手警报:升级到 Java 1.7.0 后出现 unrecognized_name 错误

    我今天从 Java 1 6 升级到 Java 1 7 从那时起 当我尝试通过 SSL 与我的网络服务器建立连接时 就会发生错误 javax net ssl SSLProtocolException handshake alert unrec
  • 在 Plotly Density_Mapbox 上添加 GeoJSON 等高线作为图层

    我想在上面添加天气轮廓plotly density mapbox地图 但我不确定必要的步骤 首先 我创建了一个matplotlib等值线图以可视化数据 然后 我用了geojsoncontour创建一个geojson文件来自所说matplot
  • 是否可以在ajax get请求中获取页面的一部分?

    我知道我们可以在向服务器发出 GET 请求时获取整个页面 但是如果我只对该页面上的一个特定 div 感兴趣 或者更准确地说对其内容感兴趣 该怎么办 这里唯一的选择是获取整个页面 例如使用 jquery find 从中获取 div 内容吗 或
  • Oracle 12 对 SQL 中的本地集合类型有问题吗?

    长话短说 我建议讨论下面看到的代码 运行时 Oracle 11 编译器引发 PLS 00306 调用 PIPE TABLE 时参数提示的数量或类型错误 PLS 00642 SQL 语句中不允许使用本地集合类型 Oracle 12编译下面的包
  • 谷歌浏览器自动填充所有密码输入

    我的问题 我必须打开谷歌来自动填充我网站上的登录信息 但是现在每当我想编辑我的帐户信息或编辑其他用户帐户信息 作为管理员 时 它都会尝试自动填充该登录数据 它在奇怪的地方填充了我的数据 问题似乎是 Chrome 会自动用某种密码填充任何输入
  • 如何在 Arduino 中将 char 变量作为数字打印到串行端口?

    我正在使用 Arduino Uno 我正在从 EEPROM 读取一个字节值并将该值存储在类型变量中char 1 字节 我想将变量的值作为数字 而不是相应的 ASCII 代码 打印到串行监视器 例如考虑char val 5 我想查看串行监视器
  • 如何在 winforms 应用程序中设置数据网格滚动条的位置?

    在我的 C winforms 应用程序中 我有一个数据网格 当数据网格重新加载时 我想将滚动条设置回用户设置的位置 我怎样才能做到这一点 编辑 我使用的是旧的 winforms DataGrid 控件 而不是较新的 DataGridView
  • 不支持动态值作为注释中的属性 - AspectJ Android [AOP Android]

    我正在使用自定义注释来记录用户单击的 id 但我收到一个错误 属性值必须是常量 我的代码片段如下 mAssetId Asset getContentId TrackEvent track event ArrayParams Params k
  • mediaelement.js 视频无法在 IE8 中播放

    我已经浏览了这里提出的所有其他问题 但没有什么能真正解决我的问题 目前 视频可以在 Chrome Safari FF 和 IE9 中加载和播放 但不能在 IE8 中加载 这是我需要支持的最后一个浏览器 您可以查看页面here http 20
  • 如何在.NET中扩展环境变量%CommonProgramFiles%\system\

    我遇到一种情况 我需要通过读取注册表设置来返回目录路径 注册表值返回我以下格式的路径 CommonProgramFiles System web32 dll 而消费者代码期望它的格式为 C Program Files Common File
  • ServerSOAPFaultException 以及如何读取它?

    我做了一个请求 我的程序吐出来了 WARNING Input Action on WSDL operation Search and Action on its associated Web Method search did not ma
  • 如何设置itemTouchHelper选择性滑动?

    所以我在 recyclerview rv 上实现了这个 itemtouchhelper simple 回调 现在 在这个 rv 中 我根据内容类型将 2 种布局设置为一行 因此 当我在 rv 上设置此 touchhelper 时 它正在这两