android的Context Menu菜单
2014-06-20 18:36
351 查看
Context Menu菜单是一个浮动式列表菜单,长时间单击一个窗口时会跳出上下文菜单。
本文主要的涉及的内容:
1:ListView的使用:
2:Context Menu菜单的使用
3:通过Context Menu菜单删除和修改ListView的内容
开发环境:android4.0 ,小米1S ,Eclipse</p><p>
一:显示ListView内容
activity_menu布局文件为:
Activigy类为:
效果图为:
二:显示Context Menu
要显示Context Menu要覆盖 onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) 方法
三:实现修改和删除操作
需要覆盖Activity的onContextItemSelected(MenuItem item)的方法。当选择不同的Context Menu内容时,触发不同的操作。
点击删除的效果为:下图表示的是删除ListView Content 0和ListView Content 0的效果图:
点击修改按钮的效果:下图表示的是将ListView Content 2修改为modify的效果图
参考文献:
1:http://blog.csdn.net/cjjky/article/details/6881582
2:android2.3应用开发实战--第八章
本文主要的涉及的内容:
1:ListView的使用:
2:Context Menu菜单的使用
3:通过Context Menu菜单删除和修改ListView的内容
开发环境:android4.0 ,小米1S ,Eclipse</p><p>
一:显示ListView内容
activity_menu布局文件为:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".Menu4OptionActivity" > <ListView android:id="@+id/menuoptionlistView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" > </ListView> </RelativeLayout>
Activigy类为:
public class Menu4OptionActivity extends Activity { private static final int LISTVIEW_LENGTH = 10; ListView listview; ArrayAdapter<CharSequence> adapter; LinkedList<CharSequence> contentList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu); listview = (ListView) findViewById(R.id.menuoptionlistView1); contentList = new LinkedList<CharSequence>(); /** * ListView中显示的内容 */ for (int i = 0; i < LISTVIEW_LENGTH; i++) { contentList.add("Listview Content " + i); } /** * ListView的适配器,这里使用的是 */ adapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_list_item_1, contentList); listview.setAdapter(adapter); //将ListView注册到Context Menu registerForContextMenu(listview); } }
效果图为:
二:显示Context Menu
要显示Context Menu要覆盖 onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) 方法
private static final int CONTEXT_REMOVE_ID1 = 0; private static final int CONTEXT_MODIFY_ID2 = 1; @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { /** * 这里使用的是代码添加弹出的菜单中内容 * 也可通过getMenuInflater().inflate(R.menu.cmenu, menu)加载定义好的xml布局 */ menu.add(0, CONTEXT_REMOVE_ID1, 0, "删除"); menu.add(0, CONTEXT_MODIFY_ID2, 1, "修改"); super.onCreateContextMenu(menu, v, menuInfo); }显示的效果图为:
三:实现修改和删除操作
需要覆盖Activity的onContextItemSelected(MenuItem item)的方法。当选择不同的Context Menu内容时,触发不同的操作。
@Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item .getMenuInfo(); final int id = (int) menuInfo.id;// 获取ListView中各个View的id switch (item.getGroupId()) { case 0: /** * 删除操作 */ if (item.getItemId() == CONTEXT_REMOVE_ID1) { contentList.remove(id); adapter.notifyDataSetChanged(); Toast.makeText(this, "已经成功删除内容" + id, Toast.LENGTH_LONG).show(); } /** * 修改操作: */ if (item.getItemId() == CONTEXT_MODIFY_ID2) { View view = (View) getLayoutInflater().inflate( R.layout.only_textview, null); final EditText text = (EditText) view .findViewById(R.id.menu_editText1); final TextView textView = (TextView) menuInfo.targetView;// 得到ListView中的Adater中存储的View text.setText(textView.getText()); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("modify content"); builder.setView(view); builder.setNegativeButton("back", null); builder.setPositiveButton("close", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { contentList.set(id, text.getText()); adapter.notifyDataSetChanged(); } }).show(); } } return super.onContextItemSelected(item); }
点击删除的效果为:下图表示的是删除ListView Content 0和ListView Content 0的效果图:
点击修改按钮的效果:下图表示的是将ListView Content 2修改为modify的效果图
参考文献:
1:http://blog.csdn.net/cjjky/article/details/6881582
2:android2.3应用开发实战--第八章
相关文章推荐
- android中的context与activity
- Android启动过程 && Activity生命周期 && Activity开机自启动 && this与getBaseContext && Activity的singleTask类型
- Android--------从一个包中的Avtivity创建另外另外一个包的Context
- android 上下文菜单Context Menu
- 避免android程序开发内存泄漏-context
- Context在android中的作用与实现
- 《转载》android context 与内存泄露
- Android简明开发教程十四:Context Menu 绘制几何图形
- Android Context
- bak 4.android use application context save global data.
- Android的几种按钮控件: Options Menu / Context Menu / Panel Menu
- android 上下文菜单Context Menu
- context.startActivity出现AndroidRuntimeException
- Android的几种按钮控件: Options Menu / Context Menu / Panel Menu
- Android application context/activity context与内存泄露
- android context
- Android获取其他包的Context实例然后干坏事
- Android获取其他包的Context实例然后干坏事
- Android 各种Context区别
- android context到底在什么时候被实例化