2011-03-06 65 views
7

我有一个listview和一个自定义适配器。ListView onItemClick有时不响应

在我的列表视图我设置:

lv.setOnItemClickListener(...)

所有工作正常。但是当我开始滚动它不。当我向下滚动时,它会很稳定(onItemClick被调用),但是当我向下滚动更快或向下滚动快速几次时,选择一个项目不会触发事件。但是如果我等一会儿或者继续点击一个项目或者慢慢滚动到顶部,它就会随机发挥作用。

有时,当我点击一个项目时,它显示黄色背景(onItemClick未调用)。 有时甚至在我停止触摸(并且onItemClick未被调用)之后橙色背景仍然保留。 有时背景根本不会改变(onItemClick未被调用)。 有时它可以工作。

该列表中的项目由几个textView/imageview/linearlayout(我为每个focusable设置= false,它没有改变任何东西)动态膨胀与视图持有人。

有人有什么错误的想法或有一个想法如何调试它?

(源代码是太大,不能粘贴在这里,如果你想我可以给你的源代码或APK)

+0

你能否提供一些代码?如果产生它的代码不能被看到,那么很难诊断问题。 – Shade 2011-03-06 19:16:21

+0

您是否因任何原因(可选/可点击/可调焦/启用)而调整视图的交互参数?你不应该这样做,这样做可能会导致非常奇怪的结果。如果您不能在此处发布活动代码,请将其放入像Pastebin之类的东西,或者将代码放入公共回购站,如Github,以便我们分析它。干杯。 – Devunwired 2011-03-06 19:26:35

+0

为快速滚动问题,你可能达到底部/顶部,你在Android 2.2。它在'Scroller'类中有一个错误,它不会“停止”滚动,所以你需要等待它“消耗”它的动量或者单击一次来“停止”它(这不是一个可见的东西),之前能够点击内容。它也发生在ScrollViews中。 – bigstones 2011-03-06 19:37:06

回答

2

此行添加到你的列表视图自定义行xml文件 的android父布局:descendantFocusability = “blocksDescendants”

而且 在充气机(自定义列视图)布局的TextView只需要添加:

机器人:可调焦= “假” 机器人:focusableInTouchMode = “假”

1

我有类似的问题。我的ListView项目包含一个包含ImageView和TextView的LinearLayout。除了以下为我的布局:

android:descendantFocusability="blocksDescendants" 

和我的TextView和ImageView的下面,在另一个答案建议:

android:focusable="false" 
android:focusableInTouchMode="false" 

我还添加了这个这对我的ImageView:

android:clickable="false"