【问题标题】:RecyclerView inside RecyclerView swipe to delete on childRecyclerView 内的 RecyclerView 滑动以删除子级
【发布时间】:2018-05-10 06:03:08
【问题描述】:

我有一个非常基本的概念,它可能是我缺少的一个非常简单的解决方案。

我基本上在recyclerView 中有一个recyclerView。它运行良好,一切顺利。

我最近决定向recyclerViews 添加一个滑动删除功能。父母(最外面的)完美地工作。但是,当我尝试在父 recyclerView's(对于子)适配器中执行完全相同的操作时,它会返回错误的适配器(它会返回父适配器)。

我认为发生这种情况是因为在孩子之前在父母身上检测到滑动(因为从技术上讲,孩子是父母的一部分),有没有办法为父母 recyclerView 禁用滑动检测,如果它是触摸的一个孩子recyclerView?例如,在父级中,我有一个 textView 作为标题,然后是 recyclerView 正下方。是否可以只有标题(textView 充当滑动,然后其余部分将传递给孩子?

我按照本教程 (https://www.androidhive.info/2017/09/android-recyclerview-swipe-delete-undo-using-itemtouchhelper/) 减去 JSON 并为简单起见仅对数据进行硬编码,并在 adapter 内添加 recyclerView 并为 textView 添加另一个适配器(内容以弥补孩子的细胞)。

发生了一件非常奇怪的事情 - 当我禁用父母的滑动以完全删除时,只有 1 个随机部分适用于孩子。我找不到解释原因的模式。

基本上回顾一下当我调用我的ItemTouchHelper 类的方法时,viewHolder 始终是父适配器而不是子适配器,因为在整个父适配器上检测到滑动而不是移动到孩子的 recyclerView ;有没有办法阻止或强制它传递给孩子,同时将所有其他元素(如 textView 标头)保留在父母身上?

【问题讨论】:

    标签: java android android-recyclerview


    【解决方案1】:

    经过漫长而艰难的时间后,我设法弄明白了。

    对于其他苦苦挣扎的人来说非常简单:

    您有两个单独的适配器(一个用于您的标头 + recyclerItemView),一个用于您的项目。

    在您的标题部分(称为部分)中,您有一个接口,它将监视从您的项目的适配器调用的 onSwipe 和 OnDrag 事件。

    如果人们有兴趣,我会发布完整的代码。我认为这种方法比使用 1 个列表和一些分隔符来确定要使用的视图类型要好得多。

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2020-09-25
      • 1970-01-01
      • 2017-08-05
      • 2019-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多