首页 > 代码库 > Android学习----------长按列表项弹出菜单,给菜单项添加事件,获取上下文

Android学习----------长按列表项弹出菜单,给菜单项添加事件,获取上下文

这里是先显示一个listview,长按listview的一个列表项,弹出一个菜单来,菜单有两个条目,

“更新该条”和“删除该条”,并且这两条都有监听事件,整体就像微信好友对话操作一样。

其中菜单项有一个获取上下文的操作:AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();

这句也是用于列表项的。

具体代码如下:

protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_second);		show = (ListView)findViewById(R.id.show);		db = SQLiteDatabase.openOrCreateDatabase(this.getFilesDir().toString()+"/music.db3", null);		//显示列表		showlist();		// 添加长按点击弹出选择菜单		show.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {			public void onCreateContextMenu(ContextMenu menu, View v,					ContextMenuInfo menuInfo) {				menu.setHeaderTitle("选择操作");				menu.add(0, 0, 0, "更新该条");				menu.add(0, 1, 0, "删除该条");			}		});	}	//给菜单项添加事件	@Override	public boolean onContextItemSelected(MenuItem item) {		AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();		//info.id得到listview中选择的条目绑定的id		String id = String.valueOf(info.id);		switch (item.getItemId()) {		case 0:			updateDialog(id);  //更新事件的方法			return true;		case 1:			//System.out.println("删除"+info.id);			deleteData(db,id);  //删除事件的方法			showlist();			return true;		default:			return super.onContextItemSelected(item);		}	}


 

//显示列表项	private void showlist(){		Cursor cursor = null;		try{			cursor = db.rawQuery("select * from musiclist", null);			inflateList(cursor);		}catch(SQLiteException se){			db.execSQL("create table musiclist(_id integer primary key autoincrement," 					+"music varchar(30) ,"					+"singer varchar(30))");			//查询			cursor = db.rawQuery("select * from musiclist", null);			inflateList(cursor);		}finally{			//cursor.close();		}	}