【发布时间】:2010-03-26 19:17:20
【问题描述】:
我创建了一个列表视图,显示存储在 SQLite 数据库中的项目的名称和日期,现在我想使用上下文菜单来修改存储在数据库中的这些项目,例如编辑名称、删除和查看。
这是列表视图的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview);
SQLiteDatabase myDB = null;
myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
Cursor cur = myDB.rawQuery("SELECT _id, trackname, tracktime" + " FROM " + MY_DB_TABLE, null);
ListAdapter adapter = new SimpleCursorAdapter(this, R.layout.listview, cur,
new String[] { Constants.TRACK_NAME, Constants.TRACK_TIME}, new int[] { R.id.text1, R.id.text2});
ListView list = (ListView)findViewById(R.id.list);
list.setAdapter(adapter);
registerForContextMenu(list);
}
还有上下文菜单...
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Track Options");
menu.add(0, CHANGE_NAME, 0, "Change name");
menu.add(0, VIEW_TRACK, 0, "View track");
menu.add(0, SEND_TRACK, 0, "Send track");
menu.add(0, DELETE_TRACK, 0, "Delete track");
}
我使用了一个 Switch 语句来控制菜单项..
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case CHANGE_NAME:
changename();
return true;
case DELETE_TRACK:
deletetrack();
return true;
default:
return super.onContextItemSelected(item);
}
那么我将如何继续映射 deletetrack();如何找到存储在数据库中的曲目ID到列表视图中已选择的项目?
【问题讨论】:
标签: java android sqlite contextmenu