`
ipjmc
  • 浏览: 707585 次
  • 性别: 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创建上下文菜单。 首先,我们需要在布局文件中定义ListView。如示例中的`main.xml`,它包含了一个LinearLayout,里面有一个TextView和一个ListView。ListView占据整个...

    Android 学习(22)ContextMenu

    总结起来,Android的ContextMenu为用户提供了方便的长按操作选项,通过创建菜单资源、注册和处理菜单项,可以轻松地在应用中实现这一功能。不过,开发者需要根据具体应用场景来决定是否使用ContextMenu,并考虑其与...

    C# ContextMenu 窗口右键菜单实现

    1. **创建ContextMenu对象**:首先,我们需要在代码中创建一个`ContextMenu`对象,例如: ```csharp ContextMenu contextMenuStrip = new ContextMenu(); ``` 2. **添加菜单项**:然后,我们可以通过`...

    ListView:单击和长按弹出上下文菜单(ContextMenu)

    本篇文章将深入探讨如何在ListView中实现单击和长按事件,弹出上下文菜单(ContextMenu)。这通常用于提供针对列表项的快捷操作,提升用户体验。 首先,我们需要在清单文件(`AndroidManifest.xml`)中为我们的Activity...

    C#利用ListView控件显示数据库数据

    还可以为ListView添加右键菜单,以便进行编辑、删除等操作。这需要创建一个ContextMenuStrip,添加菜单项,并设置事件处理程序: ```csharp ContextMenuStrip contextMenu = new ContextMenuStrip(); ...

    ContextMenu

    这个项目"ContextMenu"提供的代码示例涵盖了从创建到使用的整个流程,对于开发者来说,是一个很好的学习资源。通过深入研究和实践,我们可以更好地理解和掌握Android的`ContextMenu`功能,并将其灵活地应用到自己的...

    win32 sdk下listview控件的使用

    6. 设置图像列表:如果需要显示图标,需要创建一个图像列表,并通过`LVM_SETIMAGELIST`消息将其设置为ListView的图像列表。 7. 处理消息:实现窗口消息处理函数,处理如`WM_NOTIFY`、`WM_CONTEXTMENU`等消息。`WM_...

    ContextMenu和Menu简单实例

    在Android开发中,`ContextMenu`和`Menu`是两种用于为用户提供操作选项的重要组件。它们在用户界面上提供了一个交互式的方式,让用户可以对选定的项目执行特定的操作。本实例将详细讲解`ContextMenu`和`Menu`的创建...

    ListView嵌套控件.zip

    在ListView中嵌套ComboBox,可以为每个ListView项提供额外的选择或操作。实现这种效果通常需要以下步骤: 1. 在ListView的ItemDataBound事件中,动态创建ComboBox控件。 2. 将ComboBox添加到ListView的ItemTemplate...

    android arraylist 实现 listview

    在这个场景中,我们将探讨如何利用ArrayList来实现ListView,以及如何添加编辑、新增、删除功能,以及在Activity间传递参数,同时还会涉及到ContextMenu和OptionsMenu的实现,以及长按事件的处理。 首先,我们需要...

    wpf中给 treeview 添加 CheckBox和 ContextMenu

    为了给`TreeViewItem`添加右键菜单,我们需要创建一个`ContextMenu`并将其附加到`TreeViewItem`上。同时,我们需要为`TreeView`设置`PreviewMouseRightButtonDown`事件处理程序,以捕获右键点击并打开菜单。以下是...

    ListviewMenu.rar

    首先,在XAML中创建ContextMenu并添加MenuItem,每个MenuItem绑定到ViewModel中的ICommand: ```xml &lt;ListView x:Name="listView" ItemsSource="{Binding Items}"&gt; &lt;ListView.ContextMenu&gt; &lt;ContextMenu&gt; 操作1...

    Android ListVIew复制粘贴的实现

    2. 在ListView的Adapter中,为每个列表项创建一个可复制的数据模型。这个数据模型应该包含需要复制的文本信息。 3. 在Activity中,初始化ClipboardManager并设置监听器,以便在复制或粘贴时获取和设置数据。 4. ...

    Android之上下文菜单ContextMenu

    在Android开发中,上下文菜单(ContextMenu)是一种常用的交互元素,它为用户提供了一种针对特定视图或数据项的操作选项。上下文菜单通常在长按某个视图后弹出,显示与该视图相关的操作。在本文中,我们将深入探讨`...

    ListView长按显示菜单

    1. **创建Adapter**: 在Adapter中,你需要重写`getView()`方法,为每个列表项创建并返回一个View。这个View通常包含一个布局,布局中包含你需要显示的数据元素。 2. **设置监听器**: 为了实现长按显示菜单,我们...

    安卓Android源码——ContextMenu上下文选项菜单,长按后跳出菜单.zip

    这个压缩包文件"安卓Android源码——ContextMenu上下文选项菜单,长按后跳出菜单.zip"包含了一个名为"ContextMenuDemo"的示例项目,用于演示如何在应用程序中实现`ContextMenu`。 首先,让我们理解`ContextMenu`的...

    ListView的简单应用

    首先,我们从创建ListView实例开始。在Windows Forms中,可以通过设计界面或代码直接创建一个ListView控件。在设计界面中,只需从工具箱拖拽ListView到窗体上;在代码中,可以使用`ListView listView1 = new ...

    实现对ListView的多选、长按和删除

    在自定义的ListView适配器中,为每个列表项创建一个包含CheckBox的布局。然后,在Adapter的getView()方法中,根据数据模型的状态来设置CheckBox的选中状态。 2. **CheckBox监听**:我们需要为每个CheckBox设置...

    上下文菜单+listview

    3. 将ArrayAdapter设置为ListView的适配器,使用`setAdapter()`方法。 4. 为了响应ListView中的项点击,需要实现`onItemClickListener`。在`setOnItemClickListener()`中,你可以获取选中项的位置,并根据需要进行...

Global site tag (gtag.js) - Google Analytics