今天遇到一个问题,在listView中添加监听当点击listView的条目是没有任何反应,后来经过查阅资料终于明白其原因并找到了解决的方法:原因很简单
如果一个 ListView 的条目子视图中包含了 CheckBox、ImagaButton 等可以接收触控监听的控件的话,它们可能会遮断 ListView 本身对条目点击的监听,使得其 setOnItemClickListener() 方法失效。
如子条目中的控件有这个属性设置android:focusable="true"的,那么它将会覆盖掉ListView的setOnItemClickListener()的监听,所以就造成了ListView的监听失效的结果。
解决方法为,如果是在代码中动态生成的空间,可以用 setItemsCanFocus() 方法来禁用那些控件获取焦点。如:
list.setItemsCanFocus(false);
如果实在 XML 文件中定义的控件,则应该在 XML 文件添加相应元素属性以增加禁止获取焦点的。如:
android:focusable=”false”
android:focusableInTouchMode=”false”