我知道這個問題已被問到很多,但我發現的許多答案都不盡人意。如何從Listview和數據庫中刪除項目?
我有一個通過數據庫顯示列表的Baseadapter。信息通過遊標從數據庫傳遞到列表,遊標將光標添加到數組列表,然後填充列表視圖。我想通過一個contextmenu刪除一個listitem,並從listview和數據庫中刪除它。目前,我使用adaptercontextmenuinfo對象來獲取傳遞給數據庫類中的delete方法的位置和/或id,但info.id與數據庫_id不相對應。目前我能夠成功地從listadapter中刪除行條目,但不能從數據庫中刪除。任何幫助將非常感激。 (注:我的數據庫中有3列,其中第一感_id的) 文本菜單的java:
@Override
public boolean onContextItemSelected(MenuItem item) {
if(item.getTitle() == "Delete"){ //if "delete" is selected
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
dba.deleteRow(info.id);
DATA.remove(info.position);
adapter.notifyDataSetChanged();
數據庫中刪除行法:
public void deleteRow(long rowId){
db = dbhelper.getWritableDatabase();
try{
db.delete(Constants.TABLE_NAME, Constants.KEY_ID + "="+rowId,null);
}catch(Exception e){
}
}
我知道有很多這裏涉及的代碼。如果你想要更多,請告訴我。謝謝你的幫助!
謝謝。 if語句不是問題,代碼執行得當。問題是傳遞sqlite數據庫行的_id。我知道info.id正在返回列表視圖中的行號,這並不一定= sqlite db的_id – benbeel 2011-12-25 22:05:32
但是,如果有更多的if-else語句會導致所有語句可達。 – 2011-12-25 22:19:43
我想你不使用數據庫中的id,但是使用listview的id? – tobias 2011-12-25 23:59:47