2011-08-17 138 views
0

正如標題所說,我有一個列表,在長按提供了一個選項來從數據庫中刪除列表中的項目。當我運行代碼時,什麼都沒有發生,我得到一個警告「窗口已經聚焦,忽略聚焦增益」。 這裏的代碼片段 -android - 從上下文菜單的數據庫中刪除項目

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
    super.onCreateContextMenu(menu, v, menuInfo); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.context_menu, menu); 
} 


@Override 
public boolean onContextItemSelected(MenuItem item) { 
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
    switch (item.getItemId()) { 
    case R.id.remove: 
     System.out.println(sindex); 

     db.open(); 
     db.deleteIP(info.position); //deleteIP is the method to delete item from list 
     db.close(); 



     return true; 
    default: 
    return super.onContextItemSelected(item); 
    } 
} 

deleteIP() -

public boolean deleteIP(long _id) 
{ 
    return db.delete(DATABASE_TABLE, KEY_ID + "=" + _id, null) > 0; 
} 

db.deleteIP(info.position)產生什麼問題? 我嘗試了另外一個選項。我已經在sindex中存儲了列表項的索引。所以打電話db.deleteIP(sindex)應該已經工作。但它沒有!

請幫忙! 謝謝。

+0

你檢查數據是否從數據庫中刪除? prolly是的,但你沒有刷新適配器 – Selvin

+0

我應該如何檢查數據是否被刪除? – Umang

+0

嗯,你不明白你自己的代碼?檢查deleteIP返回或重新運行應用程序以查看行是否仍然存在 – Selvin

回答

0

您引用info.position,然後嘗試將其用作主鍵,這可能不正確。如果您使用的是CursorAdapter,那麼info.id將包含您的Cursor_ID值。

+0

所以在ArrayAdapter的情況下應該是什麼解決方案? – Mikey

+0

@mikdedroid:'info.position'值是數組中的索引。 – CommonsWare

+0

我知道,你說過使用CursorAdapter來獲取_ID,但是如果它是ArrayAdapter呢? – Mikey

相關問題