在当前的微信版本中,如果长按微信消息或对方发过来的照片,会弹出相应菜单进行选择(选择置顶或删除),这时用到的就是ContextMenu。
测试效果如下:
java代码如下:
package com.hxzy.menu; import java.util.ArrayList; import android.app.AlertDialog; import android.app.ListActivity; import android.content.DialogInterface; import android.os.Bundle; import android.view.ContextMenu; 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.Switch; import android.widget.Toast; public class MainActivity extends ListActivity { private ArrayList<String> list = null; private ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); list = new ArrayList<String>(); for (int i = 0; i < 40; i++) { list.add("测试微信消息" + i); } adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, list); this.setListAdapter(adapter); ListView lv = this.getListView(); lv.setBackgroundResource(R.drawable.d); lv.setOnCreateContextMenuListener(this); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.add(1, 1001, 0, "设为标记"); menu.add(1, 1002, 0, "置顶该消息"); menu.add(1, 1003, 0, "删除该消息"); } @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); final int pos = info.position; switch (item.getItemId()) { case 1002: { String s = list.get(pos); list.remove(pos); list.add(0, s); adapter.notifyDataSetChanged(); break; } case 1003: { AlertDialog dialog = new AlertDialog.Builder(this).create(); dialog.setTitle("系统提示"); dialog.setMessage("确认删除该消息吗?"); dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { list.remove(pos); adapter.notifyDataSetChanged(); Toast.makeText(getApplicationContext(), "删除成功", 0).show(); } }); dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getApplicationContext(), "取消删除", 0).show(); } }); dialog.show(); break; } default: break; } return super.onContextItemSelected(item); } }