android定义多个上下文菜单,Android编程实现为ListView创建上下文菜单(ContextMenu)的方法...

本文介绍了Android编程中为ListView创建上下文菜单的方法。先在ListView显示Item,长按Item弹出上下文菜单,点击菜单项目可提示长按Item的Position。文中给出了main.xml文件示例及相关代码实现,对Android程序设计有一定帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文实例讲述了Android编程实现为ListView创建上下文菜单(ContextMenu)的方法。分享给大家供大家参考,具体如下:

ContextMenu称为上下文菜单,一般在控件上长按时弹出。今天我们学习ContextMenu的用法,这里与listview相结合,先在ListView显示几个Item,然后在Item上长按,弹出一个菜单(就是ContextMenu),点击菜单上的项目,提示刚才长按的Item的Position。

main.xml文件

android:layout_width="fill_parent" android:layout_height="fill_parent"

android:orientation="vertical">

android:textSize="18sp" android:textColor="#FFFFFF"

android:layout_width="fill_parent" android:layout_height="wrap_content"/>

android:layout_width="fill_parent" android:layout_height="fill_parent">

菜单有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(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程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值