setOnItemClickListener不起作用解决方法

简介: setOnItemClickListener不起作用解决方法

问题

使用ListView时通常会和Adapter一起使用,在使用setOnItemClickListener方法监听节点时不起作用

原因

原因是因为在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件,此时这些子控件会获取到焦点,所以常常当点击item时变化的是子控件,item本身的点击没有响应,此时就该用到descendantFocusability属性了,下面让我们看看源码

源码解析

可以看到descendantFocusability有三个属性值


<enum name="beforeDescendants" value="0" />:ViewGroup将在它的任何后代之前获得焦点
<enum name="afterDescendants" value="1" />:只有当它的后代都不需要它时,ViewGroup才会获得焦点
<enum name="blocksDescendants" value="2" />:ViewGroup将阻止它的后代接收焦点

解决方法

在Item布局的根布局加上属性:android:descendantFocusability=“blocksDescendants”

即可

目录
相关文章
|
安全 网络架构
电脑维修常遇到等等相关问题及解决方法?
电脑维修常遇到等等相关问题及解决方法?
|
关系型数据库 MySQL 数据库
mysql中文乱码解决方法
mysql中文乱码解决方法
369 0
mysql中文乱码解决方法
|
应用服务中间件 nginx
今日所遇到的问题+解决方法
今日在阿里云轻量应用服务器部署LNMP时所遇问题
|
内存技术
win10 Fliqlo失效的原因及解决办法
win10 Fliqlo失效的原因及解决办法
1245 0
win10 Fliqlo失效的原因及解决办法