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”

即可

目录
相关文章
|
索引
RecyclerView,ListView实现顶部悬浮、字母排序、过滤搜索
RecyclerView,ListView实现顶部悬浮、字母排序、过滤搜索
388 0
|
XML Java Android开发
14. 【Android教程】文本输入框 EditText
14. 【Android教程】文本输入框 EditText
1320 2
|
关系型数据库 PostgreSQL Ruby
HTTP 502: Whoops, GitLab is taking too much time to respond.
最近有台云上的服务器需要释放,然后上面跑的 gitlab 也要挪个地方,如在 docker 内运行,gitlab 镜像大约 1.56G,需占用 4G 以上的内存,因资源有限,于是借在其他的服务器上搭建环境(可用内存小于4G),然鹅启动的时候莫名出现 502,Excuse me?接着搜了一些 issue 博客上的解决方案(如修改端口、重启或 hup 某个服务)无果,后来在调整的过程中从日志里发现了一些信息。
12241 0
|
XML Java Android开发
Android Studio App开发之循环试图RecyclerView,布局管理器LayoutManager、动态更新循环视图讲解及实战(附源码)
Android Studio App开发之循环试图RecyclerView,布局管理器LayoutManager、动态更新循环视图讲解及实战(附源码)
587 0
|
存储 缓存 数据库
Android之SQLite数据库使用详解
Android之SQLite数据库使用详解
1150 0
|
Android开发
Android studio 出现Plugin [id: ‘com.android.application‘, version: ‘8.1.0‘, apply: false] 问题解决办法
Android studio 出现Plugin [id: ‘com.android.application‘, version: ‘8.1.0‘, apply: false] 问题解决办法
5531 2
|
Android开发
Android中Glide加载Https图片失败的解决方案
Android中Glide加载Https图片失败的解决方案
760 1
|
程序员 Android开发
Android开发:Android Studio同时打开多个项目的正确打开姿势
刚接触Android开发的初级程序猿比较实用,比如在开发过程中,已经通过Android Studio打开了一个项目工程之后,还想重新再打开一个另外的项目工程,这种解决方法,一般资深的Android开发工程师不屑于看,但是对于不知道的小白程序猿来说却是很实用,而且网上也没有太多的基础知识点的介绍,所以还是那句话,只分享给有需要的人,只要能帮到一个人,这篇博文就有存在的意义。
3683 0
Android开发:Android Studio同时打开多个项目的正确打开姿势
TabLayout app:tabMode和app: tabGravity配合使用效果对比
TabLayout app:tabMode和app: tabGravity配合使用效果对比
|
Linux
svn踩坑-xxx is not valid as filename in directory
svn踩坑-xxx is not valid as filename in directory
218 0