前言

  作为一名Android小白,我在编写过程中,使用ListView列表,想要使用他来完成长按弹出菜单选项,并且还要进行事件操作,经过百度编程的经历后,终于成功完成。在此附上这块比较完整的代码,理论就不加以概述了,基本注释都有的,嘻嘻,希望可以帮助到大家,如果感觉不错的话,点个赞呗。

源码示例

注意:此处不进行ListView列表的具体实现,需要有一定Android和Java基础知识哦,有什么问题,欢迎下方评论区留言哦

XML布局中的ListView

<!--- ListView列表  -->
<ListView
android:id="@+id/query_book_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"> </ListView>

Java

//    Initialize ListView
private ListView bookListView; // 获取listView控制权
bookListView = findViewById(R.id.query_book_list_view); // 添加长按点击弹出选项框菜单
bookListView.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
menu.setHeaderTitle("选择操作!");
menu.add(0,0,0,"更新图书");
menu.add(0,1,0,"删除图书");
}
}); /**
* 给菜单项添加事件
* @param item 菜单索引
* @return
*/
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
// 获取上下文
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
// 得到listView中选择的条目绑定的Id
String id = String.valueOf(info.id);
// 得到列表子节点的视图
View targetView = info.targetView;
// 获取单列 某一元素的控制权
TextView bookNumberText = targetView.findViewById(R.id.book_number);
// 获取元素内容
String bookNumberToString = bookNumberText.getText().toString();
Log.i("=====绑定的ID==",id);
Log.i("===== 图书编号 ==",bookNumberToString);
switch (item.getItemId()) {
case 0:
// 更新事件的方法
// updateDiaLog(id);
return true;
case 1:
// 删除事件的方法
// deleteData(id);
return true;
default:
return super.onContextItemSelected(item);
}
}

ListView选中获取数据并弹出菜单项的更多相关文章

  1. 上下文菜单项(contextMenu)----长按按钮弹出菜单项

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  2. UIMenuController 弹出菜单框

    弹出菜单框 UIMenuItem *menuItem1 = [[UIMenuItem alloc] initWithTitle:@"删除" action:@selector(del ...

  3. SQL Server 2008 R2中,变表的右键弹出菜单中的“选择前1000行”为“选择所有行”

    原文:SQL Server 2008 R2中,变表的右键弹出菜单中的"选择前1000行"为"选择所有行" 从SQL Server 2008开始,微软为了提高查询 ...

  4. 获取layer.open弹出层的返回值

    正在开发的车联网项目用到了layer API.当我在开发“新建电子围栏”的时候需要弹出地图,用户在地图中画一个区域,最后将这个弹出层的数据返回给原页面.下面是我的实现过:程: 触发弹出层的代码: la ...

  5. Android ListView两种长按弹出菜单方式

    转自:http://www.cnblogs.com/yejiurui/p/3247527.html package com.wyl.download_demo; import java.util.Ar ...

  6. Android之弹出菜单框【注冊上下文菜单】

    注冊上下文菜单:(长按弹出一个菜单) 第一种创建方法(与长按事件结合): public class MainActivity extends Activity { private TextView u ...

  7. SpriteBuilder弹出菜单层造成卡顿的解决办法

    如果你注意到略微的卡顿(延时)(lag due to low framerate)当显示一个全屏的弹出菜单时,你可以简单的设置_levelNode(_levelNode是主游戏界面中的背景层,所有游戏 ...

  8. layui弹出层处理(获取、操作弹出层数据等)

    要点: 字符串被渲染为弹窗层之后,回自动转换为DOM,可以使用jq进行各种操作 <!DOCTYPE html> <html> <head> <meta cha ...

  9. js获取下拉框当前选中的值并弹出

    this.options[this.selectedIndex].value --- 显示文本 this.value --- 实际存储值 调用实例: <script language=" ...

  10. 关于JqueryCheck选中获取数据

    关于Jquery获取Check选中数据 首先还是得引用Jquery的包,然后新增3个CheckBox <div> <input type="checkbox" n ...

随机推荐

  1. 华为云新一代iPaaS全域融合集成平台全新升级

    摘要:基于华为十多年的数字化转型实践,华为云通过组装式交付.数智驱动.DevOps.服务化架构.安全可信.韧性6大关键技术助力客户实现应用现代化和高质量增长,华为云新一代iPaaS全域融合集成平台RO ...

  2. Netty介绍与认识

    概述 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. 2.体系结构图 Netty的核 ...

  3. C# 获取所有桌面窗口信息

    窗口标题.窗口类名.是否可见.是否最小化.窗口位置和大小.窗口所在进程信息 1 private static WindowInfo GetWindowDetail(IntPtr hWnd) 2 { 3 ...

  4. Centos7.x 更换Jenkins构建目录

    原由:最近因为原来的Jenkins构建目录,已经要满了,想着更换下构建目录,此篇文件简单介绍下更换过程. 注:此文章可能仅适用于我个人,仅供参考.如有其他办法,欢迎评论指教. 查了几种方法,最终选为使 ...

  5. Apache ShenYu 学习笔记一

    1.简介 这是一个异步的,高性能的,跨语言的,响应式的 API 网关. 官网文档:https://shenyu.apache.org/zh/docs/index 仓库地址:https://github ...

  6. Spring源码:Bean的生命周期(二)

    前言 让我们继续讲解Spring的Bean实例化过程.在上一节中,我们已经讲解了Spring是如何将Bean定义加入到IoC容器中,并使用合并的Bean定义来包装原始的Bean定义.接下来,我们将继续 ...

  7. Prism Sample 16-RegionContext

    终于发现一个有趣的新知识了. 本例的核心是RegionContext,意思是一个区域的上下文.但与DataContext似乎并不相同. 先看一下整体思路. 在主窗体上只有一个Region: <G ...

  8. 如何将c#在线编辑器嵌入自己项目

    如何将c#在线编辑器嵌入自己项目 首先我们需要介绍一下这个在线编辑器,当前的在线编辑器支持c#的代码编译运行,并且无需后台服务,基于WebAssembly实现的在浏览器端去执行我们的c#代码,基于Ro ...

  9. 2022-10-20:以下go语言代码输出什么?A:7;B:7.0;C:0;D:编译错误。 package main import ( “fmt“ ) func main() { const

    2022-10-20:以下go语言代码输出什么?A:7:B:7.0:C:0:D:编译错误. package main import ( "fmt" ) func main() { ...

  10. 2020-09-08:KVM和OpenStack的区别?

    福哥答案2020-09-08:[此答案来自知乎](https://www.zhihu.com/question/419987391)KVM只是一个虚拟机技术,别的还有xen,商业的vmware.vir ...