上下文菜单ContextMenu
Res目录下menu下创建listview_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/add"
android:title="增加"/>
<item
android:id="@+id/delete"
android:title="删除"/>
<item
android:id="@+id/update"
android:title="修改"/>
<item
android:id="@+id/select"
android:title="查询"/>
</menu>
//ActivityMain逻辑
package com.bwei.day_10_contextmenu;
import java.util.ArrayList;
import java.util.List;
import com.bwei.day_10_contextmenu_adapter.MyAdapter;
import com.bwei.day_10_contextmenu_bean.Goods;
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.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {
public static String[] content = new String[] {
"爱国者(aigo) MP5数码播放器U303 8GB 触摸屏幕MP3 白色",
"雪曼2014新款女包OL职业单肩包 女手提包斜挎包包8305 米白色",
"长袖连衣裙雪纺裙修身气质女欧美长款帝弗润驰森女拖地大牌仙长裙",
"韩国文具 可爱 创意 时尚 办公用品 大 多功能 收纳盒 笔筒包邮",
"ThinkPad E531 6885-D4C 赛扬双核 500G 联想 IBM商务 笔记本电脑",
"现货包邮顺丰 Nokia/诺基亚 107 双卡双待 老人备用手机 超长待机",
"3条装 北极绒吊带背心女打底 新款内搭黑色吊带 莫代尔蕾丝背心",
"[标配送8G卡]Sony/索尼 HDR-CX240E 数码摄像机/DV高清专业摄像机",
"天然白蓝绿玉髓水晶耳环男女925银耳钉黑玛瑙耳饰防过敏白银饰品",
"2014韩版欧根纱连衣裙新款夏女刺绣公主蓬蓬裙粉红色假两件套270",
"杭依阁2014夏装新款韩版修身淑女连衣裙女装蕾丝雪纺时尚连衣裙潮",
"HP/惠普 Envy 15 Envy 15-j105TX 四代i7高分屏8G内存/1T/4G独显",
"卡西欧CASIO时尚石英手表男士皮带手表MTP-1095Q-7B",
"正版hellokitty公仔KT毛绒玩具凯蒂猫布娃娃玩偶七夕生日礼物女生", };
public static String[] price = new String[] { "450", "1450", "150", "45",
"3999", "99", "129", "4999", "899", "270", "298", "6999", "1299",
"29", };
public static int[] imageView = new int[] { R.drawable.mp4, R.drawable.bag,
R.drawable.bqz, R.drawable.bt, R.drawable.ibm,
R.drawable.nokia3310, R.drawable.dd, R.drawable.dv, R.drawable.eh,
R.drawable.hqz, R.drawable.watch, R.drawable.wj, R.drawable.xk,
R.drawable.xk };
private List<Goods> list;
private MyAdapter myAdapter;
private EditText et;
private int position;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setData();
ListView listView = (ListView) findViewById(R.id.listView);
et = (EditText) findViewById(R.id.et);
button = (Button) findViewById(R.id.button);
myAdapter = new MyAdapter(MainActivity.this, list);
listView.setAdapter(myAdapter);
// 给listView注册上下文菜单
registerForContextMenu(listView);
}
// 创造上下文菜单
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// 得到menuInflater对象
MenuInflater menuInflater = getMenuInflater();
// 找到上下文菜单的布局文件
menuInflater.inflate(R.menu.listview_menu, menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
// 上下文菜单条目被点击时触发的方法
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo contextMenuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
// 得到点击的listView的角标
position = contextMenuInfo.position;
// 获得上下文菜单被点击的条目id
int itemId = item.getItemId();
switch (itemId) {
case R.id.add:
Goods goods = new Goods();
goods.setImage(R.drawable.ic_launcher);
goods.setName("机器人");
goods.setPrice("5000");
// 向list集合指定位置添加数据
list.add(position, goods);
// 通知listView适配器重新加载数据
myAdapter.notifyDataSetChanged();
break;
case R.id.delete:
list.remove(position);
myAdapter.notifyDataSetChanged();
break;
case R.id.update:
// 显示控件
button.setVisibility(View.VISIBLE);
et.setVisibility(View.VISIBLE);
break;
case R.id.select:
break;
}
return super.onContextItemSelected(item);
}
// button(确定)点击时的逻辑操作
public void onClick(View v) {
// 通过position,得到被点击的listView条目,所对应的list集合里的goods对象
Goods goods = list.get(position);
// 得到输入框的内容
String price = et.getText().toString().trim();
// 重新设置商品的价格
goods.setPrice(price);
myAdapter.notifyDataSetChanged();
// 设置输入框的数据<这里有清空的效果
et.setText("");
// 隐藏控件
et.setVisibility(View.INVISIBLE);
// 隐藏控件
button.setVisibility(View.INVISIBLE);
}
/**
*
*/
private void setData() {
list = new ArrayList<Goods>();
for (int i = 0; i < imageView.length; i++) {
Goods goods = new Goods();
goods.setImage(imageView[i]);
goods.setName(content[i]);
goods.setPrice(price[i]);
list.add(goods);
}
}
// 当上下文菜单关闭时调用的方法
@Override
public void onContextMenuClosed(Menu menu) {
super.onContextMenuClosed(menu);
Toast.makeText(MainActivity.this, "上下文菜单关闭了 ", 0).show();
}
}
上下文菜单ContextMenu相关推荐
- Android进阶(二十八)上下文菜单ContextMenu使用案例
上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...
- 【Android】上下文菜单ContextMenu的使用
上下文菜单 又称长按菜单.当一个视图注册了上下文菜单时,执行一个在该对象上长按(2秒)的动作,将出现一个具有相关功能的浮动菜单. 类概述 扩展自Menu的上下文菜单提供了修改上下文菜单头(header ...
- (4.0.15.3)Android 的上下文菜单: ContextMenu的使用方法以及与OptionMenu的区别
ContextMenu是Android的context menu上下文菜单,选择某项VIEW后长按menu键,就会显示出来.比如EditeText就可以通过长按来弹出拥有"cut" ...
- android 使用上下文菜单ContextMenu
Android 的上下文菜单类似于 PC 上的右键菜单.当为一个视图注册了上下文菜单之后,长按这个视图对象就会弹出一个浮动菜单,即上下文菜单.任何视图都可以注册上下文菜单,不过,最常见的是用于列表视图 ...
- Android开发——菜单(Menu)-——上下文菜单(ContextMenu)、 弹出菜单(PopupMenu)
上下文菜单(ContextMenu) 长按某个view不放,就会在屏幕中间弹出ContextMenu. 一个Activity中间只可能有一个OptionMenu,但一个Activity中间有多个Vie ...
- android 动态contextmenu,Android成长日记-ContextMenu实现上下文菜单
一. ContextMenu的组成 标题以及标题图标 菜单内容 菜单内容的点击事件 二. ContextMenu与OptionMenu的区别 OptionMenu对应的是activity,一个acti ...
- javaFX学习之剪贴板Clipboard类型对象及剪贴板内容ClipboardContent对象 和 ContextMenu内嵌式上下文菜单的使用
添加上下文菜单ContextMenu 当你无法分配任何UI空间给一个需要的功能时,你可以使用上下文菜单ContextMenu.上下文菜单ContextMenu是一个弹出窗口,会由一次鼠标点击事件触发显 ...
- 上下文菜单Context Menu
Android的上下文菜单在概念上和PC软件的右键菜单类似.当一个视图注册到一个上下文菜单时,执行一个在该对象上的"长按"(按住不动差不多两秒钟)动作,将出现一个提供相关功能的浮动 ...
- 选项菜单_上下文菜单_子菜单_图标菜单_自定义菜单_联系人标记弹出菜单
菜单控件<Menu > 选项菜单(Option Menu) 单击Menu实体按钮弹出,android中把它叫做option menu 上下文菜单(ContextMenu 是Menu的子接口 ...
最新文章
- 在php storm中怎么搭建环境,PhpStorm搭建git环境
- charles代理手机调试_H5开发 移动端 调试之 Charles 抓包 和 Map Remote
- java bitmap jar_Java面试中常用的BitMap代码
- 为什么越来越多的人喜欢自驾游?
- 汽车常用的ECU芯片
- php字符串分割函数,PHP字符串分割函数explode,strtok,str_split的用法
- html阅读caj文件格式,caj文件怎么打开,caj转换成word(解决方案)
- ubuntu系统20.04 无线网卡QCA6174 wifi不存在或找不到解决方法 红米笔记本
- python简单的青蛙旅行小游戏
- Silverlight 2教程(四):Chiron.exe:Silverlight 2打包和动态语言部署工具
- 基于51的MPX4115压力检测仿真
- 图卷积神经网络3-空域卷积:GNN/GraphSAGE/PGC的引入和介绍
- 你什么时候放下,什么时候就没有烦恼。
- API接口安全加密,防止接口被黑客攻击
- VIPS:基于视觉的Web页面分页算法(转载)
- WPF Prism框架之Dialog
- Python程序设计与算法基础教程第四章上机题
- 就业报告显示,近七成受访者向往互联网行业,互联网行业前景如何?
- 推荐两个好用的虚拟机、SSH 终端开源工具(Virtual Box、WindTerm)
- OpenCV系列之轮廓:更多属性 | 二十四