`
ipjmc
  • 浏览: 703284 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

为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编程实现为ListView创建上下文菜单(ContextMenu)的方法

    主要介绍了Android编程实现为ListView创建上下文菜单(ContextMenu)的方法,简单分析了上下文菜单的功能及ListView创建上下文菜单(ContextMenu)的具体步骤与相关操作技巧,需要的朋友可以参考下

    WPF编程宝典 part1

    7.4.2 使应用程序为本地化做好准备 194 7.4.3 管理翻译过程 195 7.5 小结 200 第8章 元素绑定 201 8.1 将元素绑定到一起 201 8.1.1 绑定表达式 202 8.1.2 绑定错误 203 8.1.3 绑定模式 203 8.1.4 使用代码创建绑定 ...

    WPF编程宝典 part2

    7.4.2 使应用程序为本地化做好准备 194 7.4.3 管理翻译过程 195 7.5 小结 200 第8章 元素绑定 201 8.1 将元素绑定到一起 201 8.1.1 绑定表达式 202 8.1.2 绑定错误 203 8.1.3 绑定模式 203 8.1.4 使用代码创建绑定 ...

    Android实现类似于PC中的右键弹出菜单效果

    Android系统中的ContextMenu(上下文菜单)类似于PC中的右键弹出菜单,当一个视图注册到一个上下文菜单时,执行一个在该对象上的“长按”动作,将出现一个提供相关功能的浮动菜单。上下文菜单可以被注册到任何视图对象...

    安卓记事本

    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.setHeaderTitle("信息操作"); menu.add(0, DB_DELETE, 0, "删除"); super.onCreateContextMenu(menu, v, ...

    Android入门到精通源代码.

    6.1.1 上下文菜单(ContextMenu) 6.1.2 选项菜单(OptionsMenu) 6.1.3 基于XML的菜单结构 6.2 界面布局设计 6.2.1 基于XML的布局设计 6.2.2 线性布局(LinearLayout) 6.2.3 相对布局(RelativeLayout) 6.2.4 ...

    一款非常好的WPF编程宝典2010 源代码

    第1章 WPF概述 1 1.1 理解Windows图形 1 1.1.1 DirectX:新的图形引擎 1 1.1.2 硬件加速与WPF 2 1.2 WPF:高级API 4 ...20.4.1 为打印预览创建XPS文档 597 20.4.2 通过XPS直接打印 到打印机 598 20.4.3 异步...

    Apress.Pro.WPF.in.C.Sharp.2008.2nd.Edition.Feb.2008

    18.4.3 ContextMenu类 520 18.4.4 菜单分隔条 521 18.5 工具条和状态栏 522 18.5.1 ToolBar控件 522 18.5.2 StatusBar控件 525 18.6 结束语 526 第19章 文档 527 19.1 理解文档 527 19.2 流文档 528 19.2.1 流内容...

    Android实例代码

    ListView、ListActivity; ExpandableListView; GridView、ImageSwitcher; Gallery; 2.5、对话框:AlertDialog; PopupWindow; DatePickerDialog、TimePickerDialog; ProgressDialog; 2.6、消息提示:Toast; ...

    疯狂Android讲义(第2版)源代码 第6章~第9章

    ListView、ListActivity; ExpandableListView; GridView、ImageSwitcher; Gallery; 2.5、对话框:AlertDialog; PopupWindow; DatePickerDialog、TimePickerDialog; ProgressDialog; 2.6、消息提示:Toast; ...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 远程下载桌面背景图案——URLConnection与setWallpaper()搭配 8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 远程下载桌面背景图案——URLConnection与setWallpaper()搭配 8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 远程下载桌面背景图案——URLConnection与setWallpaper()搭配 8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客...

    Google Android SDK开发范例大全的目录

    8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 远程下载桌面背景图案——URLConnection与setWallpaper()搭配 8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动博客...

    Google+Android+SDK开发范例大全

    4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——ListView的布局 4.20 以动态列表配置选项——ListActivity与Menu整合技巧 4.21 查找程序根目录下所有文件——JavaI/O与...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 远程下载桌面背景图案——URLConnection与setWallpaper()搭配 8.11 将手机文件上传至网站服务器——模拟HTTPFORM的POSTACTION 8.12 移动...

Global site tag (gtag.js) - Google Analytics