在当前的微信版本中,如果长按微信消息或对方发过来的照片,会弹出相应菜单进行选择(选择置顶或删除),这时用到的就是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);
}
}