Android 中ListView的Item点击事件失效的快速解决方法

作者:杨道龙 时间:2021-09-29 02:00:41 

在平常的开发过程中,我们的ListView可能不只是简单的显示下文本或者按钮,更多的是显示复杂的布局,这样的话,我们就得自己写布局和自定义adapter了,一般是继承于BaseAdapter,示例代码见下方。写ListView的点击事件时OnItemClickListener,onItemClick方法没有执行,导致ListView中Item条目点击事件失效,而Item中的View点击事件可以在getView方法中进行处理。导致整个Item点击失效的原因多半是由于在【你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件)】,此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。

这时候就可以使用descendantFocusability来解决,其中descendantFocusability对应的属性有3个

该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

属性的值有三种:

beforeDescendants:viewgroup会优先其子类控件而获取到焦点

afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

通常我们用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了
我遇到的情况时item布局有一个ImageButton按钮,因为这个组件抢事件能力强,根button差不多;因此运行后,listviewitem点击失效。使用上边方式解决问题;当然也可以改变imagebutton为imageview也可以解决这个问题。

来源:http://blog.csdn.net/qq_32059827/article/details/52548603

标签:android,listview,item
0
投稿

猜你喜欢

  • spring cloud oauth2 feign 遇到的坑及解决

    2022-06-15 13:06:06
  • Java switch关键字原理及用法详解

    2023-04-16 23:29:49
  • Java @Transactional指定回滚条件

    2023-11-19 02:47:23
  • 详解Mybatis注解写法(附10余个常用例子)

    2023-01-19 03:39:53
  • C# 列表List的常用属性和方法介绍

    2022-09-04 07:52:05
  • C++异常处理入门(try和catch)

    2022-09-18 04:16:34
  • mybatis foreach 循环 list(map)实例

    2023-11-23 23:39:05
  • java实现单链表、双向链表

    2023-02-09 03:15:59
  • Java jpa外连接查询join案例详解

    2022-12-17 18:31:15
  • Java源码解析之Iterable接口

    2023-04-17 08:06:57
  • ViewDragHelper实现QQ侧滑效果

    2022-12-25 23:26:54
  • Java8中Optional操作的实际应用

    2022-04-30 22:52:31
  • Android Dialog 动画实例详解

    2022-10-22 22:24:29
  • Android 数据存储方式有哪几种

    2023-12-10 17:20:16
  • 解决JAVA遍历List集合,删除数据时出现的问题

    2021-12-25 15:38:03
  • C#通过NPOI导入导出数据EXCEL

    2023-01-27 14:24:08
  • Spring Boot Actuator监控端点小结

    2023-02-15 05:04:23
  • Unity3D实现批量下载图片功能

    2021-07-03 13:00:14
  • java身份证合法性校验并提取身份证有效信息

    2023-04-18 17:26:18
  • Springboot快速入门教程

    2023-03-02 21:50:56
  • asp之家 软件编程 m.aspxhome.com