欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-16 10:07:22
本文实例讲述了android编程实现为listview创建上下文菜单(contextmenu)的方法。分享给大家供大家参考,具体如下: contextmenu称为上下文菜...

本文实例讲述了android编程实现为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相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android布局layout技巧总结》、《android视图view技巧总结》、《android编程之activity操作技巧总结》、《android操作json格式数据技巧总结》、《android资源操作技巧汇总》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。

上一篇:

下一篇: