这里是先显示一个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(); } }
Android学习----------长按列表项弹出菜单,给菜单项添加事件,获取上下文
时间: 2024-10-24 08:17:30