转载自:
点击打开链接
这里是先显示一个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();
}
}