`

Creating a ContextMenu in ListView

阅读更多

 

layout中的main.xml

 

XML:
<?xml version ="1.0" encoding ="utf-8" ?> 
<LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android" 
     android:orientation ="vertical" 
     android:layout_width ="fill_parent" 
     android:layout_height ="fill_parent" > 

     <TextView 
          android:layout_width ="fill_parent" 
          android:layout_height ="wrap_content" 
          android:text ="Long-Press on of the Items in the list." /> 

     <ListView android:id ="@+id/list_favorites" 
          android:layout_width ="fill_parent" 
          android:layout_height ="fill_parent" /> 

</LinearLayout>

 

 

源代码是:

 

Java代码   收藏代码
  1. package com.gggeye.study;  
  2.   
  3. import java.util.ArrayList;  
  4.   
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.view.ContextMenu;  
  8. import android.view.MenuItem;  
  9. import android.view.View;  
  10. import android.view.ContextMenu.ContextMenuInfo;  
  11. import android.view.View.OnCreateContextMenuListener;  
  12. import android.widget.ArrayAdapter;  
  13. import android.widget.ListView;  
  14.    
  15.   
  16. public class ContextMenuSample extends Activity {  
  17.   
  18.      // ===========================================================  
  19.      // Final Fields  
  20.      // ===========================================================  
  21.      protected static final int CONTEXTMENU_DELETEITEM = 0;  
  22.   
  23.      // ===========================================================  
  24.      // Fields  
  25.      // ===========================================================  
  26.   
  27.      protected ListView mFavList;  
  28.      protected ArrayList<Favorite> fakeFavs = new ArrayList<Favorite>();  
  29.   
  30.      // ===========================================================  
  31.      // "Constructors"  
  32.      // ===========================================================  
  33.   
  34.      /** Called when the activity is first created. */  
  35.      @Override  
  36.      public void onCreate(Bundle icicle) {  
  37.           super.onCreate(icicle);  
  38.           setContentView(R.layout.main);  
  39.   
  40.           /* Add some items to the list the listview will be showing. */  
  41.           fakeFavs.add(new Favorite("John""nice guy"));  
  42.           fakeFavs.add(new Favorite("Yasmin""hot girl"));  
  43.           fakeFavs.add(new Favorite("Jack""cool guy"));  
  44.   
  45.           this.mFavList = (ListView) this.findViewById(R.id.list_favorites);  
  46.           initListView();  
  47.      }  
  48.   
  49.      private void refreshFavListItems() {  
  50.           mFavList.setAdapter(new ArrayAdapter<Favorite>(this,  
  51.                     android.R.layout.simple_list_item_1, fakeFavs));  
  52.      }  
  53.   
  54.      private void initListView() {  
  55.           /* Loads the items to the ListView. */  
  56.           refreshFavListItems();  
  57.   
  58.           /* Add Context-Menu listener to the ListView. */  
  59.           mFavList.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {  
  60.   
  61.                public void onCreateContextMenu(ContextMenu conMenu, View view , ContextMenuInfo info) {  
  62.                     conMenu.setHeaderTitle("ContextMenu");  
  63.                     conMenu.add(000"Delete this favorite!");  
  64.                     
  65.                     /* Add as many context-menu-options as you want to. */  
  66.                }  
  67.           });  
  68.      }  
  69.   
  70.      // ===========================================================  
  71.      // Methods from SuperClass/Interfaces  
  72.      // ===========================================================  
  73.   
  74.      @Override  
  75.      public boolean onContextItemSelected(MenuItem aItem) {  
  76.           ContextMenuInfo menuInfo = (ContextMenuInfo) aItem.getMenuInfo();  
  77.   
  78.           /* Switch on the ID of the item, to get what the user selected. */  
  79.           switch (aItem.getItemId()) {  
  80.                case CONTEXTMENU_DELETEITEM:  
  81.                     /* Get the selected item out of the Adapter by its position. */  
  82.                     Favorite favContexted = (Favorite) mFavList.getAdapter()  
  83.                          .getItem(0);  
  84.                     /* Remove it from the list.*/  
  85.                     fakeFavs.remove(favContexted);  
  86.   
  87.                     refreshFavListItems();  
  88.                     return true/* true means: "we handled the event". */  
  89.           }  
  90.           return false;  
  91.      }  
  92.   
  93.      // ===========================================================  
  94.      // Inner and Anonymous Classes  
  95.      // ===========================================================  
  96.   
  97.      /** Small class holding some basic */  
  98.      protected class Favorite {  
  99.   
  100.           protected String name;  
  101.           protected String kindness;  
  102.   
  103.           protected Favorite(String name, String kindness) {  
  104.                this.name = name;  
  105.                this.kindness = kindness;  
  106.           }  
  107.   
  108.           /** The ListView is going to display the toString() return-value! */  
  109.           public String toString() {  
  110.                return name + " (" + kindness + ")";  
  111.           }  
  112.   
  113.           public boolean equals(Object o) {  
  114.                return o instanceof Favorite && ((Favorite) o).name.compareTo(name) == 0;  
  115.           }  
  116.      }  
  117. }  
分享到:
评论

相关推荐

    react使用高德地图react-amap:Markers、Circle、ContextMenu、自定义ContextMenu

    以下是关于`react-amap`、Markers、Circle、ContextMenu以及自定义ContextMenu的详细知识点: 1. **react-amap**: `react-amap`是基于React的高德地图组件库,它将高德地图API的功能转化为React组件,使得开发者...

    wpf中给 treeview 添加 CheckBox和 ContextMenu

    在实际应用中,我们经常需要增强其功能,比如添加复选框(CheckBox)和右键上下文菜单(ContextMenu)。下面将详细介绍如何在WPF的`TreeView`中实现这些特性。 首先,我们要理解`TreeView`的基本用法。`TreeView`...

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

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

    ContextMenu

    在Android开发中,`ContextMenu`是一个非常重要的交互元素,它为用户提供了一种在长按操作后展示更多选项的界面。`ContextMenu`不同于普通的`OptionsMenu`,后者通常在屏幕顶部(如Action Bar)显示,而`ContextMenu...

    Android编程实现为ListView创建上下文菜单(ContextMenu)的方法

    在Android开发中,ListView是常用的一种控件,用于展示大量数据列表。为了增强用户体验,我们经常需要添加一些交互功能,比如上下文菜单(ContextMenu)。上下文菜单在用户长按列表项时出现,提供与选中项相关的操作...

    Android 学习(22)ContextMenu

    在Android应用中,我们通常在ListView、RecyclerView或其他可滚动的视图中使用ContextMenu,以展示与选中项目相关的操作。 要创建一个ContextMenu,你需要遵循以下步骤: 1. **注册ContextMenu**:在你的Activity...

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

    listView1.ContextMenuStrip = contextMenu; // 实现编辑和删除方法 private void EditSelectedItem(ListViewItem selectedItem) { // 编辑代码 } private void DeleteSelectedItem(ListViewItem selectedItem) {...

    C# ContextMenu 窗口右键菜单实现

    在实际应用中,`ContextMenu`不仅可以用于`Form`,还可以与其他控件如`PictureBox`、`ListView`等配合使用。只需将`ContextMenu`与相应控件的`ContextMenuStrip`属性关联即可。 在开发过程中,我们还可以根据需求...

    android arraylist 实现 listview

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

    contextmenu

    【contextmenu】是计算机用户界面中的一个重要组成部分,它是指在用户进行特定操作,如右键点击时出现的菜单。这个菜单提供了与所选元素相关的功能选项,极大地增强了用户与应用程序的交互性。在Web开发、桌面应用...

    ContextMenu和Menu简单实例

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

    ListView嵌套控件.zip

    1. 创建一个ContextMenu或者MenuStrip控件,定义菜单项及其关联的事件处理程序。 2. 将该菜单控件附加到ListView的某个事件,比如MouseClick或RightClick事件。 3. 在事件处理程序中,通过判断点击的ListView项,...

    Android之上下文菜单ContextMenu

    为了使`ListView`中的每个项目都能弹出`ContextMenu`,需要在适配器的`getView()`方法中设置长按监听器: ```java @Override public View getView(int position, View convertView, ViewGroup parent) { // ... ...

    ListView的简单应用

    foreach (ListViewItem item in listView1.SelectedItems) { listView1.Items.Remove(item); } } ``` 以上就是关于“ListView的简单应用”的基础知识。通过这些操作,我们可以创建一个功能完备的ListView,允许...

    win32 sdk下listview控件的使用

    关于右键菜单的实现,当用户在ListView上右键单击时,系统会发送`WM_CONTEXTMENU`消息到父窗口。处理此消息时,我们可以创建并显示一个弹出式菜单(PopupMenu),然后根据用户的菜单选择执行相应操作。具体步骤如下...

    WPF中鼠标左键单击Button弹出ContextMenu,让其右键ContextMenu失效

    在标题“WPF中鼠标左键单击Button弹出ContextMenu,让其右键ContextMenu失效”中,我们讨论的核心是两种常见的用户交互:Button的左键点击和ContextMenu的显示。通常,右键点击会默认触发ContextMenu,但在这个场景...

    前端项目-leaflet-contextmenu.zip

    通常,你需要将下载的`Leaflet.contextmenu-master`压缩包解压,然后将`dist`目录下的`leaflet.contextmenu.js`和对应的CSS文件(如`leaflet.contextmenu.css`)添加到你的HTML文件中,通过`&lt;script&gt;`和`&lt;link&gt;`标签...

    vcontextmenu适用于Vue20的ContextMenu组件

    《Vue2.x中的v-contextmenu:打造高效便捷的右键菜单》 在现代Web开发中,Vue.js作为一款流行的前端框架,以其轻量级、易上手和强大的特性深受开发者喜爱。而在实际应用中,右键菜单作为一种常见的交互元素,能够...

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

    它可能包括一个简单的布局,一个`ListView`,一个自定义的适配器,以及对`ContextMenu`的各种处理逻辑。通过分析和修改这个示例代码,你可以深入理解`ContextMenu`的工作原理,并将其应用到自己的项目中。 总的来说...

Global site tag (gtag.js) - Google Analytics