在Android软件设计与实现中我们通常都会使用到ListView这个控件,系统有一些预置的Adapter可以使用,例如SimpleAdapter和ArrayAdapter,但是总是会有一些情况我们需要通过自定义ListView来实现一些效果,那么在这个时候,我们通常会碰到自定义ListView无法选中整个ListViewItem的情况,也就是无法响应ListView的onItemClickListener中的onItemClick()方法,究竟是为什么呢?我之前也在网上查过不少的资料,但是没有发现什么有价值的文章,有一些是建议在Adapter的getView方法中对自己需要响应单击事件的控件进行设置。但是最终的效果并不是特别理想,而且我认为这是一种取巧的方式,并不推荐。之后自己查看了一下ViewGroup的源码,发现了以下的一段常量声明:

/**

* This view will get focus before any of its descendants.

*/

public static final int FOCUS_BEFORE_DESCENDANTS = 0×20000;

/**

* This view will get focus only if none of its descendants want it.

*/

public static final int FOCUS_AFTER_DESCENDANTS = 0×40000;

/**

* This view will block any of its descendants from getting focus, even

* if they are focusable.

*/

public static final int FOCUS_BLOCK_DESCENDANTS = 0×60000;

/**     * This view will get focus before any of its descendants.     */

public static final int FOCUS_BEFORE_DESCENDANTS = 0×20000; 
/**     * This view will get focus only if none of its descendants want it.     */

public static final int FOCUS_AFTER_DESCENDANTS = 0×40000; 
/**     * This view will block any of its descendants from getting focus, even     * if they are focusable.     */

public static final int FOCUS_BLOCK_DESCENDANTS = 0×60000;

我们看到了一行代码定义的变量的意思是“当前View将屏蔽他所有子控件的Focus状态,即便这些子控件是可以Focus的”,其实这段话的意思就是这个变量代表着当前的View将不顾其子控件是否可以Focus自身接管了所有的Focus,通常默认能获得focus的控件有Button,Checkable继承来的所有控件,这就意味着如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将ListView中Item中包含的所有控件的focusable属性设置为false,这样的话ListView的Item自动获得了Focus的权限,也就可以被选中了,也就会响应onItemClickListener中的onItemClick()方法,然而将ListView的Item Layout的子控件focusable属性设置为false有点繁琐,我们可以通过对Item Layout的根控件设置其android:descendantFocusability=”blocksDescendants”即可,这样Item Layout就屏蔽了所有子控件获取Focus的权限,不需要针对Item Layout中的每一个控件重新设置focusable属性了,如此就可以顺利的响应onItemClickListener中的onItemClick()方法了。

原文--http://www.7dot9.com/2010/09/android%E4%B8%AD%E8%87%AA%E5%AE%9A%E4%B9%89listview%E6%97%A0%E6%B3%95%E5%93%8D%E5%BA%94onitemclicklistener%E4%B8%AD%E7%9A%84onitemclick%E6%96%B9%E6%B3%95%E9%97%AE%E9%A2%98%E8%A7%A3%E5%86%B3%E6%96%B9/

转载于:https://www.cnblogs.com/zenip/archive/2013/01/30/2883767.html

[转]Listview的onItemClickListener无法响应的解决方法相关推荐

  1. 插入u盘计算机未响应,win7系统插入u盘死机怎么办|win7插入u盘无响应的解决方法...

    ‍‍ 最近有些win7旗舰版用户遇到u盘插入计算机后会出现未响应导致系统死机,虽然等一会儿就能恢复正常,但是每次插入u盘都要卡一下决对是有问题的.遇到在win7系统插入u盘死机怎么办呢?会出现插入u盘 ...

  2. 关于Qt Designer程序/UI文件打开未响应的解决方法

    关于Qt Designer程序/UI文件打开未响应的解决方法 参考文章: (1)关于Qt Designer程序/UI文件打开未响应的解决方法 (2)https://www.cnblogs.com/ys ...

  3. win10 mysql5.5无响应_Win10安装mysql5.5安装最后一步停住卡死未响应的解决方法

    在win10系统中安装了Mysql5.5,不过在配置到最后一步的时候,就会出现停止卡死未响应的现象,尝试修改了Mysql端口号和修改了Mysql服务名之后,都不能解决该问题,还使用管理员身份启动Mys ...

  4. dnf服务器未响应win7,win7dnf未响应怎么解决|分享win7系统dnf总是未响应的解决方法...

    收到反馈win7dnf未响应怎么解决|分享win7系统dnf总是未响应的解决方法,相信dnf的忠实用户们一定会遇到dnf未响应的问题吧,有些小伙伴们还是经常性的会遇到这种问题,就来求助小编给出解决方法 ...

  5. wdns服务器未响应,Win7系统​网络诊断提示DNS服务器未响应的解决方法

    Win7系统​网络诊断提示DNS服务器未响应的解决方法 昨天小编的朋友Win7系统​网络诊断提示DNS服务器未响应的解决方法说,她win7系统电脑在开机的过程中,怎么都连接不上网络了,并且出现dns服 ...

  6. 路由器wan口认证断开服务器无响应,路由器WAN口设置已断开(服务器无响应)的解决方法...

    越洋帮路由网原创:文章是关于"路由器WAN口设置已断开(服务器无响应)的解决方法"的相关知识分享,希望可以帮到大家. - 素材来源网络 编辑:小易. 路由器WAN口设置的地方显示: ...

  7. DEDECMS织梦后台更新网站栏目无反应一键更新无响应的解决方法

    DEDECMS织梦后台更新网站栏目无反应一键更新无响应的解决方法 参考文章: (1)DEDECMS织梦后台更新网站栏目无反应一键更新无响应的解决方法 (2)https://www.cnblogs.co ...

  8. Endnote 导入enw文件无响应及解决方法

    Endnote 导入enw文件无响应及解决方法 参考文章: (1)Endnote 导入enw文件无响应及解决方法 (2)https://www.cnblogs.com/shuaihe/p/114701 ...

  9. dns远程服务器未响应,dns服务器未响应的解决方法

    <dns服务器未响应的解决方法>由会员分享,可在线阅读,更多相关<dns服务器未响应的解决方法(3页珍藏版)>请在人人文库网上搜索. 1.dns服务器未响应的解决方法网络连接显 ...

最新文章

  1. mvcc原理_MySQL MVCC原理
  2. OO--第三单元规格化设计 博客作业
  3. 运筹学最优化理论系列概念-单纯形法原理解析
  4. linux 服务器安装 anaconda
  5. 【小题目】判断一个数字是否是3的倍数
  6. 10-排序6 Sort with Swap(0, i) (25 分)
  7. 终于修好了MacBook
  8. Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
  9. Docker容器化部署及应用实战
  10. POJ2348 Euclid's Game
  11. echarts雷达图
  12. win10系统下将DMG转为ISO镜像——(虚拟机黑苹果操作)
  13. glide加载gif图不显示动画_Glide4-入门教程-4-加载gif图片
  14. 【SIGIR2017满分论文】IRGAN:大一统信息检索模型的博弈竞争
  15. best time to cooldown
  16. 在ubuntu下烧写映像文件到nand--基于三星210开发板
  17. 实现财务自由的重要工具
  18. 程序员的自我涵养,写好代码的实战经历分享
  19. Selenium Webdriver 的使用java执行js代码 解决 ScriptEngine不支持浏览器内置对象window,document的问题
  20. 移动端,JS判断滑到页面顶部下滑进行操作

热门文章

  1. 【SSL】openssl 提取 PKCS 证书库中的公钥、私钥、证书、密钥、CA证书
  2. 【若依(ruoyi)】解决同一Tomcat下两个/多个若依(ruoyi)项目部署报错
  3. MySQL复制数据库
  4. linux 压缩文件夹的一部分
  5. 中getname_Spring IOC中的灵魂伴侣:BeanFactory ApplicationContext
  6. 中法线如何反转_凹凸贴图、法线贴图、置换贴图傻傻分不清?
  7. mysql extract month_MySQL日期时间 Extract(选取)函数
  8. mac 二进制安装mysql_如何在MAC中安装mysql二进制分发版
  9. sqlliet 创建多表查询的视图_第4关 复杂查询
  10. laravel打印sql语句_SQL语句为什么慢?索引为什么失效?