ListView - ContextMenuItemListener失效

Android上下文菜单ContextMenu的实战开发指南 在移动应用开发中,上下文菜单(ContextMenu)提供了一种在用户长按某个元素时弹出菜单的交互方式,增强应用的用户体验。Android系统中的ContextMenu与桌面应用的右键菜单类似,但为移动设备优化。它们通常用于展示对某个视图或元素适用的一组命令或操作,但不同于常规菜单,它们不会占用界面空间,而是隐藏起来,需要时才展示。ContextMenu在Android开发中的实现不需要编写复杂的XML布局文件,主要通过代码进行注册和定义。 阅读详情

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

Nginx源码安装和基础配置 Nginx简介 nginx: 世界第二大web服务器软件,以高并发、低消耗著称,源自于俄罗斯,创建者 Igor(伊戈尔),2004年开源,最早以代理服务器的身份出现,2015成立nginx公司,2019年以6.7亿被F5 Networks公司收购。 代理服务器: 正向:squid 反向: squid:最古老的代理服务器 LVS: 优点: 1.抗负载能力强、是工作在网络4层之上仅作分发之用 2.配置性比较低,这是一个缺点也是一个优点,简单不易出错 3.工作稳定,抗负载能力很强,有完整的双机热备方案 阅读详情

相关推荐

crazyswarm无人机集群搭建笔记(一)资料索引

crazyswarm无人机搭建笔记:资料收集

Coco_range的博客 808

为什么ListView.setOnItemClickListener、setOnCreateContextMenuListener会无效

如果ListView中的单个Item的view中存在checkbox,button等view,会导致ListView.setOnItemClickListener无效, 事件会被子View捕获到,ListView无法捕获处理该事件. 解决方法: 在checkbox、button对应的view处加 android:focusable="false" android:clicka

小钟的专栏 1148

BGE(BAAI General Embedding)模型详解

BGE(BAAI General Embedding)是北京智源人工智能研究院(BAAI)推出的通用文本嵌入模型系列,旨在为各种自然语言处理任务提供高质量的向量表示。

ttyy1112的专栏 7558

QT鼠标右键信号触发 customContextMenuRequested没有反应问题处理

QT鼠标右键信号触发 customContextMenuRequested没有反应问题处理 xxx(发出该信号的对象)->setContextMenuPolicy(Qt::CustomContextMenu);

qq_40529346的博客 1674

大数据国赛第2套任务C-子任务一特征工程

根据**Hudi**的dwd_ds_hudi库中相关表或MySQL中shtd_store中相关表(order_detail、sku_info),计算出与用户id为6708的用户所购买相同商品种类最多的前10位用户(只考虑他俩购买过多少种相同的商品,不考虑相同的商品买了多少次),将10位用户id进行输出,若与多个用户购买的商品种类相同,则输出结果按照用户id升序排序,输出格式如下,将结果截图粘贴至客户端桌面【Release任务C提交结果.docx】中对应的任务序号下;

weixin_44117248的博客 904

MATLAB信号处理实战:VMD分解参数调优全指南(附避坑技巧)

本文深入探讨了MATLAB中变分模态分解(VMD)的核心参数调优实战技巧。针对模态数K和惩罚系数α的选择难题,提供了从经验估计、可视化观察到量化指标辅助的渐进式调优框架,并分享了避免过分解与欠分解的实用避坑指南,旨在帮助工程师高效处理非平稳信号,提取清晰的物理特征。

weixin_29079671的博客 145

Android onItemLongClick+onCreateContextMenu setOnCreateContextMenuListener实现长按ListItem弹出不同菜单

转:http://hi.baidu.com/dean_wang/blog/item/00b0e247d223b528cefca374.htmlAndroid onItemLongClick+onCreateContextMenu实现长按ListItem弹出不同菜单2010-09-07 18:29    前一段时间做项目需要做一个效果:一个ListActivity,长按不同的item弹出的菜单不一样;如下图所示我们长按不同的item需要弹出不同标题的menu:<br />     <br />    长按事件

gaoyizyy2008的专栏 3255

Shader之——花草动画shader

今天 ,接到了个需求,花草的动画。谈到花草动画,立马就想到顶点动画,让顶点动起来就可以实现了。但是有个问题,所有的草都往一个方向运动,这个就麻烦了。因为在shader里没有随机这种概念,提到最多的是用一张噪声图来模拟。在网上搜索了一下,发现有更好的办法,就是用每个顶点到一个点的距离来控制动画的开始,毕竟每个顶点到同一个点的距离很少是一样的。 float dis = distance ...

baicaishisan的博客 2185

ListView应用--------setOnItemLongClickListener和setOnItemClickListener

  ListView的Item中包含Button、ImageView时,在不进行任何设置的情况下,Item不能够响应setOnItemLongClickListener事件。因为Item中的子控件将优先获取到Click的Focus,若想使Item依旧能够响应需进行一下设置:对Item Layout的根控件设置其android:descendantFocusability=”blocksDescen...

weixin_30765319的博客 282

OpenSpec 完全指南 config.yaml文件

不管是项目内还是全局存放,自定义工作流都要遵守以下规则,否则会导致OpenSpec无法识别,新手一定要记牢:一个文件夹 = 一个工作流:工作流文件夹的名称,就是中schema字段要填写的名称;每个工作流文件夹必须包含:这是工作流的核心定义文件,没有它,OpenSpec无法识别这个工作流;模板文件统一放templates/目录:如果需要自定义生成文件的模板(比如统一的提案模板、任务模板),就放在工作流文件夹下的templates/里,OpenSpec会自动识别;

h a 6 6 6 c k 为 你解决复杂难题! 1423

优秀的 Verilog/FPGA开源项目介绍(六)- MIPI

MIPI的协议我就不详细介绍了(可以查看<下面的二维码>),这里和开源方案比较接近的即使FPGA实现MIPI物理层(DPHY)中电气属性相关的几种方案:MIPI DPHY RX...

OpenFPGA的博客 4457

RecyclerView添加ContextMenu易错细节

RecyclerView是默认不能想ListView一样支持ContextMenu的,不过可以通过重写以下两个方法来实现ContextMenu:protected ContextMenu.ContextMenuInfo getContextMenuInfo(){...} @Override public boolean showContextMenuForChild(View origina

少晒太阳,如鱼得水 755

RK3588部署YOLOv11与RKNN全流程教程

本文详细介绍了在RK3588开发板上部署YOLOv11目标检测模型的全流程。主要内容包括:PC端CUDA/cuDNN环境配置、Anaconda虚拟环境搭建、RKNN Toolkit2安装;YOLOv11模型从PyTorch到ONNX再到RKNN的格式转换;以及RK3588开发板的系统配置、RKNPU驱动安装和最终推理实现。教程提供了完整的代码示例,帮助开发者快速在边缘设备上实现高效的AI推理应用,涵盖从环境准备到实时检测的全套解决方案。

FJN110的博客 376

Android 菜单(ContextMenu)

Android 菜单(ContextMenu)   Android 的ContextMenu,即上下文菜单。(类似电脑上的鼠标右键功能,选中某个元素,然后点右键,在弹出菜单上执行操作。)在手机上,通过长时间按住界面上的元素,就会出现事先设计好的上下文菜单。   主要用到的方法有: // 创建显示上下文菜单 setOnCreateContextMenuListener //...

stephen830 270

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

android 动态contextmenu,Android ContextMenu的使用

ContextMenu介绍:假设一个View注冊了上下文菜单。那么当长按该View时便会弹出一个浮动菜单,来供选择下一步操作。实现这个功能须要调用setOnCreateContextMenuListener来注冊一个监听器。那么它和注冊长按监听器setOnLongClickListener有什么差别呢?以下会在代码中加以測试,通过加入打印发现,用户对某个View长按之后。首先触发的是onLongC...

weixin_39860946的博客 385

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Qt的右键菜单及位置捕捉问题

这个是原文:http://hi.baidu.com/%B7%C9%CF%E8_%C6%D1%B9%AB%D3%A2/blog/item/802a999a8625debdc9eaf423.html2009年04月24日 星期五 21:18QWidget及其子类都可有右键菜单,因为QWidget有以下两个与右键菜单有关的函数:Qt::ContextMenuPolicy co

iotplan.com 物联网技术专栏 2386

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

右键菜单的高级应用 contextMenuEvent ( QContextMenuEvent * event )

void TimerDeployDlg::contextMenuEvent ( QContextMenuEvent * event ) { QPoint point = event->globalPos (); if ( mainDlg->containsPoint ( activations, point ) || mainDlg->containsPoint ( intAct...

知识胶囊 1033

Qt设置右键菜单无效(customContextMenuRequested触发)

问题描述 想使用customContextMenuRequested信号触发槽函数,发现没有效果 例如:槽函数代码如下 void CMainWindow::on_tableView_customContextMenuRequested(const QPoint &pos) { Q_UNUSED(pos); QMenu menu; //创建一个QMenu对象 //给menu添加三个选项 menu.addAction("选项一"); menu.addAction

lw的博客 1万+

android长按呼出菜单,Android ListView 长按列表弹出菜单

Android ListView 长按列表弹出菜单设置长按菜单listView.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuIn...

weixin_42279320的博客 885

ListView.setOnItemClickListener、setOnCreateContextMenuListener无效

<br />如果ListView中的单个Item的view中存在checkbox,button等view,会导致ListView.setOnItemClickListener无效,<br />事件会被子View捕获到,ListView无法捕获处理该事件.<br />解决方法:<br />在checkbox、button对应的view处加android:focusable="false"<br />    android:clickable="false" android:focusableInTouc

1万+

OnCreateContextMenuListener,MultiChoiceModeListener和OnLongClickListener的优先级

查看短信源码的时候,对于以下代码,发现一个问题:listView.setOnCreateContextMenuListener(mConvListOnCreateContextMenuListener); listView.setOnKeyListener(mThreadListKeyListener); listView.setChoiceMode(ListView

我是北上君 1064

单击显示onCreateContextMenu菜单

onCreateContextMenu的使用效果: onCreateContextMenu是View的上下文菜单,正常情况下,显示ContextMenu需要长按,但是有时候也需要直接单击显示的业务!如何优雅的解决呢? 直接上代码: public class MainActivity extends AppCompatActivity { @Override protected

Go贝壳 1万+

onCreateContextMenu用法

一、onCreateContextMenu 1.可以在activity或者Fragment里面,通过注册registerForContextMenu(view),其中view可以是Button或者TextView等。 ? 1 registerForContextMenu(btn);//btn是要点击的控件

qq_29885865的博客 7194

在RecyclerView当中使用 contextMenu

前几天想用contextMenu来实现recyclerview中的批量删除的功能,于是去官网找了找contextMenu是使用方法,通过registerForContextMenu(View v)注册了contextmenu后,发现onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)没有

allbule的博客 2430
上一篇: Ant之Copy
下一篇: C指针
Wo_Ai_Java
博客等级 码龄16年 26粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值