android ListView 的 setOnItemClickListener方法失效解决方法

今天遇到一个问题,在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”

原文地址:https://www.cnblogs.com/rainbowhjj/p/2846739.html