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

时间:2015-07-04 08:44:58

标签: android listview android-recyclerview

这让我发疯了。 RecyclerView中缺少ListView中默认实现的内容。

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

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

  

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

这与多点触控无关。您可以用一根手指获得相同的效果,快速点击不同的行。您可以更容易通过多点触摸重现效果,但无法保证用户在第一行的线程仍未完成时永远不会点击第二行。

您的问题与您的实施有关。之一:

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

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

另一种可能性是完全摆脱“在列表行上点击一个线程”,并且在你做任何正在尝试的工作之前需要一个更积极的步骤(例如,点击一些完成按钮)做。