`
wuhua
  • 浏览: 2114354 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Creating a ContextMenu on a 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>

 

 

源代码是:

 

package com.gggeye.study;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
 

public class ContextMenuSample extends Activity {

     // ===========================================================
     // Final Fields
     // ===========================================================
     protected static final int CONTEXTMENU_DELETEITEM = 0;

     // ===========================================================
     // Fields
     // ===========================================================

     protected ListView mFavList;
     protected ArrayList<Favorite> fakeFavs = new ArrayList<Favorite>();

     // ===========================================================
     // "Constructors"
     // ===========================================================

     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle icicle) {
          super.onCreate(icicle);
          setContentView(R.layout.main);

          /* Add some items to the list the listview will be showing. */
          fakeFavs.add(new Favorite("John", "nice guy"));
          fakeFavs.add(new Favorite("Yasmin", "hot girl"));
          fakeFavs.add(new Favorite("Jack", "cool guy"));

          this.mFavList = (ListView) this.findViewById(R.id.list_favorites);
          initListView();
     }

     private void refreshFavListItems() {
          mFavList.setAdapter(new ArrayAdapter<Favorite>(this,
                    android.R.layout.simple_list_item_1, fakeFavs));
     }

     private void initListView() {
          /* Loads the items to the ListView. */
          refreshFavListItems();

          /* Add Context-Menu listener to the ListView. */
          mFavList.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

               public void onCreateContextMenu(ContextMenu conMenu, View view , ContextMenuInfo info) {
                    conMenu.setHeaderTitle("ContextMenu");
                    conMenu.add(0, 0, 0, "Delete this favorite!");
                  
                    /* Add as many context-menu-options as you want to. */
               }
          });
     }

     // ===========================================================
     // Methods from SuperClass/Interfaces
     // ===========================================================

     @Override
     public boolean onContextItemSelected(MenuItem aItem) {
          ContextMenuInfo menuInfo = (ContextMenuInfo) aItem.getMenuInfo();

          /* Switch on the ID of the item, to get what the user selected. */
          switch (aItem.getItemId()) {
               case CONTEXTMENU_DELETEITEM:
                    /* Get the selected item out of the Adapter by its position. */
                    Favorite favContexted = (Favorite) mFavList.getAdapter()
                         .getItem(0);
                    /* Remove it from the list.*/
                    fakeFavs.remove(favContexted);

                    refreshFavListItems();
                    return true; /* true means: "we handled the event". */
          }
          return false;
     }

     // ===========================================================
     // Inner and Anonymous Classes
     // ===========================================================

     /** Small class holding some basic */
     protected class Favorite {

          protected String name;
          protected String kindness;

          protected Favorite(String name, String kindness) {
               this.name = name;
               this.kindness = kindness;
          }

          /** The ListView is going to display the toString() return-value! */
          public String toString() {
               return name + " (" + kindness + ")";
          }

          public boolean equals(Object o) {
               return o instanceof Favorite && ((Favorite) o).name.compareTo(name) == 0;
          }
     }
}
 

 

 

 

2
2
分享到:
评论

相关推荐

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

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

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

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

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

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

    ContextMenu

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

    wpf中给 treeview 添加 CheckBox和 ContextMenu

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

    C# ContextMenu 窗口右键菜单实现

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

    Android 学习(22)ContextMenu

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

    contextmenu

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

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

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

    android arraylist 实现 listview

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

    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) { // ... ...

    前端项目-leaflet-contextmenu.zip

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

    win32 sdk下listview控件的使用

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

    vcontextmenu适用于Vue20的ContextMenu组件

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

    contextMenu

    《jQuery-contextMenu:高效实现右键菜单的利器》 在网页开发中,右键菜单是一个常见且实用的功能,它能够为用户提供便捷的操作选项。jQuery-contextMenu是一款强大的jQuery插件,专为实现自定义右键菜单而设计。这...

    android ContextMenu 上下文菜单

    在Android开发中,`ContextMenu`是用户交互的一种重要方式,特别是在处理列表或视图时,为用户提供更多操作选项。上下文菜单(ContextMenu)通常在长按某个项目时弹出,而不是像常规菜单那样通过菜单键或者汉堡菜单...

    ListView长按显示菜单

    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater....

Global site tag (gtag.js) - Google Analytics