Android编程实现为ListView创建上下文菜单(ContextMenu)的方法
程序员文章站
2023-12-16 10:07:22
本文实例讲述了android编程实现为listview创建上下文菜单(contextmenu)的方法。分享给大家供大家参考,具体如下:
contextmenu称为上下文菜...
本文实例讲述了android编程实现为listview创建上下文菜单(contextmenu)的方法。分享给大家供大家参考,具体如下:
contextmenu称为上下文菜单,一般在控件上长按时弹出。今天我们学习contextmenu的用法,这里与listview相结合,先在listview显示几个item,然后在item上长按,弹出一个菜单(就是contextmenu),点击菜单上的项目,提示刚才长按的item的position。
main.xml文件
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <textview android:id="@+id/text" android:text="zzz" android:textsize="18sp" android:textcolor="#ffffff" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <listview android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="fill_parent"> </listview> </linearlayout>
菜单有3个条目,在/res/menu/test_menu.xml中定义,和optionmenu差不多,只是没有icon
package com.hello.menu; import android.app.activity; import android.os.bundle; import android.view.contextmenu; import android.view.menu; import android.view.menuinflater; import android.view.menuitem; import android.view.view; import android.view.contextmenu.contextmenuinfo; import android.widget.adapterview.adaptercontextmenuinfo; import android.widget.arrayadapter; import android.widget.listview; import android.widget.simpleadapter; import android.widget.textview; public class apidemos extends activity { /** called when the activity is first created. */ private textview mtextview; private listview mlistview; private string [] values; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); mtextview = (textview) findviewbyid(r.id.text); //下面的代码用于初始化一些数据 values = new string[30]; stringbuilder sb = new stringbuilder("z"); for (int i = 0; i < values.length; i++) { sb.append(i); values[i] = sb.tostring(); } mlistview = (listview) findviewbyid(r.id.list); mlistview.setadapter(new arrayadapter<string>(this, android.r.layout.simple_list_item_1, values)); mtextview.settext(string.valueof(mlistview.getadapter().getcount())); //为listview注册contextmenu registerforcontextmenu(mlistview); } //创建contextmenu @override public void oncreatecontextmenu(contextmenu menu, view v, contextmenuinfo menuinfo) { // todo auto-generated method stub if (v.getid() == r.id.list) { menuinflater inflater = getmenuinflater(); menu.setheadertitle("contextview sample").setheadericon(r.drawable.icon); inflater.inflate(r.menu.test_menu, menu); } super.oncreatecontextmenu(menu, v, menuinfo); } @override public boolean oncontextitemselected(menuitem item) { // todo auto-generated method stub if (item.getmenuinfo() instanceof adaptercontextmenuinfo) { adaptercontextmenuinfo menuinfo = (adaptercontextmenuinfo) item.getmenuinfo(); //处理菜单的点击事件 switch (item.getitemid()) { case r.id.call: mtextview.settext(item.gettitle().tostring() + menuinfo.position); break; case r.id.cc: mtextview.settext(item.gettitle().tostring() + menuinfo.position); break; case r.id.poweroff : mtextview.settext(item.gettitle().tostring() + menuinfo.position); break; } } return super.oncontextitemselected(item); } }
更多关于android相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android布局layout技巧总结》、《android视图view技巧总结》、《android编程之activity操作技巧总结》、《android操作json格式数据技巧总结》、《android资源操作技巧汇总》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。