我创建了一个带有“交换项目位置”和“使用滑动手势删除项目”的 RecyclerView,如here所述。除了项目中包含的搜索栏之外,一切正常。我只能通过点击某个位置来调整搜索栏值,但不能通过点击可拖动拇指然后向左或向右移动来更改该值。在这些情况下,滑动手势会从父 RecyclerView 中删除该项目。
如何实现在滑动手势发生时更改搜索栏的值,并仅在搜索栏外执行滑动手势时删除它?
@Ben P.:我创建了自己的从 LinearLayout 扩展的类,实现了
onInterceptTouchEvent
但我无法中断滑动手势。我想是因为我需要拦截 RecyclerView 方法,但是,此类不提供可以重写的 onInterceptTouchEvent
方法。
相反,我解决了我的问题如下:我在 RecyclerView 中显示两种类型的视图(default和edit),并且只有edit类型包含SeekBar。由于不允许删除当前编辑的项目是绝对可以的,因此我在
getMovementFlags
方法中区分了 ViewHolder 的类型,我从 ItemTouchHelper.Callback()
重写了该方法。
(抱歉我没有提到这两种视图类型的信息。)
删除 onInterceptTouchEvent() 和 onTouchEvent() 对我有用。