Android之ListView长按列表项弹出菜单 给菜单项添加事件 获取上下文

来源:互联网 发布:天蝎网络第三季百度云 编辑:程序博客网 时间:2024/04/18 23:14

具体思路:

这里是先显示一个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, "删除该条");}});}//给菜单项添加事件@Overridepublic boolean onContextItemSelected(MenuItem item) {AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();//info.id得到listview中选择的条目绑定的idString 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();}}







0 0
原创粉丝点击