当在布局文件中加入了Button、ImageButton、CheckBox、RadioButton等控件(也就是Button或者Checkable的子类控件)的时候,listView是无法响应onItemClick事件的。
问题原因:当ListView中包含Button、ImageButton、CheckBox、RadioButton等控件的时候,Android会默认将focus给了这些控件,这导致ListView根本就获取不到focus,所以导致onItemClick事件无法响应。
解决方案:
(1) 将xml布局文件中出现的所有的Button、ImageButton、CheckBox、RadioButton等控件的android:focusable属性设置为false;
(2)第一种方案有点儿麻烦,一般采用该方案。修改父容器的android:descendant设置为beforeDescendants或者blocksDescendants即可。
细说android:descendantFocusability属性:
该属性可以有三种值:
(1)beforeDescendants: viewGroup会优先其他子类控件而获取到焦点;
(2)afterDescendants: viewGroup只有当其子类控件不需要获取焦点的时候才能获取焦点;
(3)blocksDescendants: viewGroup会覆盖子类控件而直接获取焦点;
最常用的是第三个blocksDescendants。