问题标签 [itemtouchhelper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2306 浏览

android - ItemTouchHelper - 在第一条跳线之后强制下降

我正在使用 ItemTouchHelper 和 ItemTouchHelper.SimpleCallback 来允许用户重新排序垂直列表 Recycler View。

拖放有效,但在第一条跳线之后强制下降,即使我没有将手指从拖动的单元格中移开。

请在 SimpleCallback 下面找到:

0 投票
2 回答
840 浏览

android - 如何使用 ItemTouchHelper 和光标实现拖放

我一直在尝试使用 ItemTouchHelper 在我的笔记应用程序中实现拖放功能,但是我正在努力弄清楚如何让它与光标一起使用。我目前正在使用游标加载器和内容提供程序从数据库中检索存储的笔记数据,并且适配器从返回的游标接收它的数据,如图所示。

我遇到的问题是,当我拖放它们时,我不知道如何跟踪列表中移动项目的位置。我无法更改游标中行的顺序。我只看到适配器的数据源是列表的示例。我曾考虑将光标数据复制到 Note 对象列表中,以便我可以重新排列它们以反映通过拖放所做的更改,但这似乎破坏了使用光标和光标加载器所获得的一切。此外,当游标加载器完成加载时,它将再次返回一个新游标,其中包含原始顺序中的所有结果并相应地填充适配器,因此如果我的新列表将丢失,则对顺序所做的任何更改都会丢失。

有谁知道如何做到这一点,或者我是否使用游标和加载器完全错误地解决了这个问题?任何帮助将非常感激。谢谢!

0 投票
0 回答
568 浏览

android - Android Drag and Drop - 在使用 Recycler 视图将一个项目拖放到另一个项目上时创建一个文件夹

我已经在 GridView 中使用 ItemTouchHelper 实现了拖放功能。我使用了Paul Burke的想法, 我可以重新排序和交换项目,但我需要添加另一个功能来创建一个文件夹,将一个文件/项目放在另一个文件/项目上(将一个网格项目放在另一个上)。在当前实现onItemMove当我将一个项目悬停到另一个时被调用,只有当我们将拖动的项目悬停在其他两个网格项目的中间时,我才需要交换项目。有什么方法可以使用 ItemTouch Helper 实现相同的,或者我需要移动到Android 默认拖放框架。

0 投票
2 回答
2780 浏览

java - 如何限制 ItemtouchHelper 只从左向右滑动

嗨,我正在使用回收站视图并应用 ITEMTOUCHHELPER 其工作。我应用逻辑(direction == ItemTouchHelper.LEFT)然后删除项目。所有这些事情都正常工作。

但是当我向右滑动然后向左滑动时。它给出的 dX 值 >0。这意味着在右侧完成滑动。

如果我删除一个项目没问题如果我保持原样并再次滑动,那么这种奇怪的行为就会开始。

当我从左侧滑动多次时,它会给出 dX<0 意味着它会再次开始工作。

这是我的实现

这是我向左滑动时的日志猫片段,但它给了我 dX >0

一行中的问题

向左滑动使 dX >0

问题

为什么我会出现这种奇怪的行为?感觉就像一个应用程序正在挂起但它没有挂起,即使我向左滑动,它也在向右滑动。

0 投票
2 回答
8021 浏览

android - notifyItemChanged 不刷新视图

首先,我整天都在做这件事,但什么都做不了。我有一个RecyclerView使用RecyclerView's 的适配器SortedList。我尝试TouchHelper使用回调类实现:

这是TouchHelper的初始化

我的适配器实现了接口OnItemChangeListener

ViewHolder读取状态,当状态为TimerHolder.TIMER_PENDING_DELETE它隐藏视图的其余部分并显示带有撤消按钮的界面。但是,直到我将视图滚动出去并再次滚动回来,这种情况才会发生。有什么建议我缺少什么吗?

问题案例

链接

适配器类 ViewHolder 类

0 投票
1 回答
633 浏览

android - 如何控制滑动以关闭 RecyclerView 中的单个列表项

我正在使用两个ItemTouchHelper对象,一个用于向左滑动和相应的操作,另一个用于向右滑动和相应的操作。在我的列表中,很少有项目必须只启用左滑动,很少有项目必须只启用右滑动。

但问题是,如果我将 my 附加RecyclerView到两个 Helper 对象,那么每个对象都可以在两个方向上滑动。

是否有任何方法可以控制ItemTouchListener中的 Swipe to Dismiss 的单个列表项?

PS 对外部库不感兴趣

0 投票
4 回答
1998 浏览

android - 在 NestedScrollView 中带有 RecyclerView 的 ItemTouchHelper:拖动滚动不起作用

我已经像这篇文章中描述的那样实现了 ItemTouchHelper: https ://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf#.k7xm7amxi

如果 RecyclerView 是 CoordinatorLayout 的子级,则一切正常。

但如果 R​​ecyclerView 是 CoordinatorLayout 中 NestedScrollView 的子项,则拖动滚动不再起作用。拖动一个项目并将其移动到屏幕的顶部或底部,RecyclerView 不会像它不是 NestedScrollView 的子项那样滚动。

有任何想法吗?

0 投票
2 回答
2544 浏览

android - RecyclerView ItemTouchHelper 滑动撤消

在使用 2 个“删除”和“取消”按钮滑动后,我会显示隐藏的视图。在我的 xml itemrow 中,我有 2 个内部 Relativelayouts

带有 id front 的 RelativeLayout 是可滑动的,在带有 id item_container 的包含布局上,其中有两个按钮

问题是当带有按钮的隐藏布局显示按钮不可点击时

这里 ItemTouchHelper 实现

和这里的观众

如果是更正确的按钮点击但不是在滑动后首先尝试更新,然后点击项目它就像仍然在滑动模式和通过日志它显示前 3 次点击是滑动方向
onSwipe Log.d("SWIPE", "direction = " + 方向);

然后单击按钮取消或删除

0 投票
0 回答
2180 浏览

android - 使用 ItemTouchHelper.Callback 在项目拖动上滚动 recyclerview

ItemTouchHelper.Callback 调用 interpolateOutOfBoundsScroll 默认情况下,当项目部分超出屏幕时。但是当项目被逐渐拖到屏幕底部时,我如何滚动回收视图。

在此处输入图像描述

0 投票
1 回答
3366 浏览

android - Android - RecyclerView 使用 ItemTouchHelper.Callback 拖动

我目前正在开发一个小型 Android 模块,我面临一个也许有人可以解决的问题。我需要创建一个日历并允许用户通过以下方式选择一个日期范围:1)单击开始日期(默认情况下这将创建一个 2 天的范围),然后 2)触摸一个范围边界并拖动它以增加或减少那个范围

目前,我已经使用带有 GridLayoutManager 的 RecyclerView创建了所有日历天单元格,该单元格有很多行(所有周),每行 7 个项目(天)。然后我使用了 RecyclerView ItemTouchHelper ( https://developer.android.com/reference/android/support/v7/widget/helper/ItemTouchHelper.html )和 ItemTouchHelper.Callback ( https://developer.android.com/参考/android/support/v7/widget/helper/ItemTouchHelper.Callback.html来完成拖放功能。我的方法是使用这些助手提供的拖放检测(看看https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf#.ib8r012gc) 修改它以避免移动一个项目并且只检测我想要的触摸+拖放手势。我已经通过删除默认拖动动画(覆盖 ItemTouchHelper onDraw/onDrawOver)并使用 ItemTouchHelper.Callback 回调来管理拖动运动(不交换适配器项目,因为我需要它们始终在同一位置)正确地完成了该功能。一切正常,但我现在面临一个问题,因为拖动检测没有按预期工作。我将尝试解释一下:如果我在给定单元格的中心开始拖动移动,然后移动到其左侧的单元格,则在到达中心之前不会触发拖动移动(与我开始拖动移动的位置相同)左侧单元格。这是一个问题,因为我需要在到达另一个单元格时立即检测到拖动(如果手指在新的单元格边界内,则应该触发拖动)。另一个例子是:如果我在一个单元格的最左侧开始拖动移动,直到我到达另一个单元格的最左侧时才会触发拖动。

现在,我正在尝试使用 ItemTouchHelper.Callback.chooseDropTarget 方法来在手指进入新单元格后立即手动选择放置目标,但我无法让它工作。我认为(但我无法确保)接收到的 x,y 坐标有些奇怪。

我知道一些代码示例会很有帮助,但我无法粘贴它,因为它属于私有且受保护的存储库:(

任何人都可以提供给我的任何帮助将不胜感激。而且,当然,我会尽量保留这个话题,以提供我能提供的所有信息。我还将考虑新的不同方法和建议来获得我需要移动范围边界的“触摸+移动+向上”运动:)

非常感谢所有 Stack Overflow 社区!