学习日记--ContextMenu的简单测试

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






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值