【发布时间】:2011-03-06 18:46:13
【问题描述】:
我有一个列表视图和一个自定义适配器。
在我的列表视图中我设置了这个:
lv.setOnItemClickListener(...)
一切正常。但是当我开始滚动时它不会。当我缓慢向下滚动时,它是稳定的(调用 onItemClick),但是当我更快地向下滚动或快速向下和向上滚动几次时,选择一个项目不会触发事件。但是,如果我稍等片刻或继续单击某个项目或慢慢滚动到顶部,它就会随机运行。
有时当我单击一个项目时,它会显示黄色背景(并且未调用 onItemClick)。 有时即使在我停止触摸后橙色背景仍然存在(并且未调用 onItemClick)。 有时背景根本不会改变(并且 onItemClick 没有被调用)。 有时它会起作用。
列表的项目由几个 textView / imageview / linearlayout 组成(我为每个 focusable=false 设置它什么都没有改变)用视图持有者动态膨胀。
是否有人知道出了什么问题或知道如何调试它?
(源码太大,这里不能贴,如果你愿意,我可以把源码或者apk发给你)
【问题讨论】:
-
您能提供一些代码吗?如果无法看到产生问题的代码,就很难诊断问题。
-
您是否出于任何原因(可选择/可点击/可聚焦/启用)调整视图的交互参数?你不应该这样做,这样做会导致非常奇怪的结果。如果您无法在此处发布 Activity 代码,请将其放入 Pastebin 之类的东西中,或者将代码放入 Github 之类的公共存储库中,以便我们对其进行分析。干杯。
-
对于快速滚动问题,您可能已经到达底部/顶部并且您使用的是 Android 2.2。它在
Scroller类中有一个错误,它不会“停止”滚动,因此您需要等待它“消耗”它的动力或单击一次以“停止”它(它不是可见的东西),之前能够点击内容。它也发生在ScrollViews。 -
这里是代码主要活动代码pastebin.com/pZ1qbyRg
-
嗨@jpprade,您找到解决方案了吗? (很久以前,我知道)。我发现我的自定义
ListView只长按了我的第二个TextView,但不是我的第一个(不知道为什么),这与我从下面的答案中添加的任何解决方案无关。对第二个非常有效,但对第一个永远无效,并且它们应该在ListView中的单个项目位置中,所以如何让它全部长按是令人费解的。用户不会知道只点击第二个。 ://