Recyclerview单项选择.没有多点触感

Tha*_*man 7 android listview android-recyclerview

这真让我抓狂.RecyclerView中缺少ListView中默认实现的内容.

我希望列表视图的确切行为设置为单选模式.我尝试了这个问题的解决方案,但它没有完全解决问题.当我用2-3个手指等触摸列表时,它可能只会突出显示一行,但如果我快速抬起手指,即使每次只突出显示一行,所有内容都会被触发.(我也可以听到手机的声音效果很快重复3次)

基本上我想要从手机禁用多点触控事件,这样无论用户使用多少手指,每次只能选择一个项目列表

小智 11

要在recyclerview中禁用多点触控,您可以android:splitMotionEvents="false"在布局文件中的recyclerview标记中使用 .根据该属性,您将无法在recyclerview中获得多点触控.


Com*_*are 2

问题是,每次用户单击一行时,我都会启动一个新线程,因此如果我尝试多次触摸回收器的项目,即使在您的示例应用程序中,也有多个线程同时启动,并且会发生意外结果。

这与多点触控无关。您可以用一根手指快速点击不同的行来获得相同的效果。可能会更容易,但不能保证用户永远不会在第一行的线程仍然突出时点击第二行。

你的问题在于你的实施。任何一个:

  • 快速连续点击多行是可以的,并且您需要修复“意外结果”,例如序列化线程、具有单个线程和 a LinkedBlockingQueue,或者同步对共享数据的访问,或者

  • 快速连续点击多行是不行的,在这种情况下,您需要跟踪当用户点击一行时线程是否未完成,然后决定要做什么(丢弃事件?将要完成的工作排队,所以它是在当前线程完成后执行的?还有什么?)。

另一种可能性是完全摆脱“在列表行上分叉单击线程”,并在执行您尝试执行的任何工作之前需要采取更积极的步骤(例如,单击某个“完成”按钮)。