当前位置: 首页 > news >正文

ListView.setOnItemClickListener、setOnCreateContextMenuListener无效 为什么

如果ListView中的单个Item的view中存在checkbox,button等view,会导致ListView.setOnItemClickListener无效,

事件会被子View捕获到,ListView无法捕获处理该事件.

解决方法:

在checkbox、button对应的view处加android:focusable="false"
   android:clickable="false" android:focusableInTouchMode="false"

其中focusable是关键

从OnClickListener调用getSelectedItemPosition(),Click 和selection 是不相关的,Selection是通过D-pad or trackball 来操作的,Click通常是点击操作的。

arg2参数才是点击事件位置的参数

第二种方法 就是在自己的getView中

convertView = mInflater . inflate ( R . layout . list_item_text , null );
convertView . setClickable ( true );
convertView . setOnClickListener ( clickListener );
public OnClickListener myClickListener = new OnClickListener () {
public void onClick ( View v ) {
       //code to be written to handle the click event  
    }  
};  

 

刚刚在网上找到问题的关键,终于解决了:

  如果你的自定义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=”blocksDescendant”即可,这样Item Layout就屏蔽了所有子控件获取Focus的权限,不需要针对Item Layout中的每一个控件重新设置focusable属性了,如此就可以顺利的响应onItemClickListener中的onItenClick()方法了。

转载于:https://www.cnblogs.com/DswCnblog/archive/2012/08/28/2660544.html

相关文章:

  • /etc/sudoers (root权限管理)
  • 人力成本成发展瓶颈,传统OTA遭遇成长困境
  • snmp不记录日志
  • C#连接数据库的几种方法总结
  • 【原】oracle11g bbed install and example
  • 根据二叉树的后序遍历以及中序遍历还原二叉树
  • vim相关资源
  • Android多媒体学习十一:实现仿百度图片查看功能
  • 【译】学习vi编辑器——第一章vi编辑器
  • 学生电脑何时能“成为自己”?
  • ubuntu系统安全
  • 文檔翻譯:NSOperation Class Reference
  • linux文件系统的块大小查看
  • 即时通讯开发----回音消除技术
  • 乐视网进军智能电视,产业变局或引发行业效应
  • __proto__ 和 prototype的关系
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • css系列之关于字体的事
  • ES6系统学习----从Apollo Client看解构赋值
  • Hibernate【inverse和cascade属性】知识要点
  • HTML5新特性总结
  • iOS 系统授权开发
  • LintCode 31. partitionArray 数组划分
  • 开源SQL-on-Hadoop系统一览
  • 如何利用MongoDB打造TOP榜小程序
  • 使用common-codec进行md5加密
  • 使用putty远程连接linux
  • 微信开放平台全网发布【失败】的几点排查方法
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • k8s使用glusterfs实现动态持久化存储
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (1)STL算法之遍历容器
  • (C++20) consteval立即函数
  • (day6) 319. 灯泡开关
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (补)B+树一些思想
  • (六)vue-router+UI组件库
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • *1 计算机基础和操作系统基础及几大协议
  • .cn根服务器被攻击之后
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • @RequestBody与@ModelAttribute
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [acwing周赛复盘] 第 69 场周赛20220917
  • [C++]unordered系列关联式容器
  • [CTO札记]如何测试用户接受度?
  • [C语言][C++][时间复杂度详解分析]二分查找——杨氏矩阵查找数字详解!!!
  • [C语言]——柔性数组
  • [GN] 设计模式——面向对象设计原则概述
  • [HarekazeCTF2019]encode_and_encode 不会编程的崽
  • [ICCV2017]Neural Person Search Machines
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装