2013-03-08 34 views
0

我已經檢查了與我自己相關的每個問題。我使用恕我直言的代碼完全不同。到目前爲止,我已經編碼了一切。我讀過,刪除數據庫中的數據只是通過傳遞位置,問題是數據庫中的自動生成的id與傳遞的位置不一樣。所有我想要實現的是刪除列表視圖中的項目後,數據庫中的項目也將被刪除。與數據庫一起在列表視圖中刪除項目[ANDROID]

從數據庫中獲取的所有數據的代碼:

public ArrayList<String> getData() { 
    String[] columns = new String[] { KEY_ID, KEY_CLIENT_NAME, 
      KEY_PRODUCT_NAME, KEY_SUPPLIER_PRICE, KEY_BS_PRICE, KEY_QTY, 
      KEY_TOTAL_AMOUNT }; 
    Cursor c = sql.query(DB_TABLE, columns, null, null, null, null, null); 

    ArrayList<String> result = new ArrayList<String>(); 

    int id = c.getColumnIndex(KEY_ID); 
    int cName = c.getColumnIndex(KEY_CLIENT_NAME); 
    int pName = c.getColumnIndex(KEY_PRODUCT_NAME); 
    int suppPrice = c.getColumnIndex(KEY_SUPPLIER_PRICE); 
    int bsPrice = c.getColumnIndex(KEY_BS_PRICE); 
    int qty = c.getColumnIndex(KEY_QTY); 
    int totalAmount = c.getColumnIndex(KEY_TOTAL_AMOUNT); 

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 

     result.add("ID: " + c.getInt(id) + "\n" + "CLIENT NAME: " 
       + c.getString(cName) + "\n" + "PRODUCT NAME: " 
       + c.getString(pName) + "\n" + "SUPPLIER PRICE: " 
       + c.getString(suppPrice) + "\n" + "RETAIL PRICE: " 
       + c.getString(bsPrice) + "\n" + "QUANTITIY: " 
       + c.getString(qty) + "\n" + "TOTAL: " 
       + c.getString(totalAmount) + "\n"); 
    } 

    return result; 
} 

中檢索數據的代碼:

sql = new SQLDatabase(this); 
    sql.open(); 
    ArrayList<String> data = sql.getData(); 
    sql.close(); 

的代碼刪除,應執行:

protected void onListItemClick(View view, int position, long id) { 
    Log.i("TAG", "onListItemClick id=" + position + id); 


     AlertDialog.Builder builder = new AlertDialog.Builder(Delete.this); 

     builder.setMessage("WHAT DO YOU WANT TO DO?"); 
     builder.setNegativeButton("DELETE", new 
     DialogInterface.OnClickListener() { 

     @Override public void onClick(DialogInterface dialog, int which) { } 
        // DELETE CODE HERE 
     }); 

     builder.setNeutralButton("CANCEL", new 
     DialogInterface.OnClickListener() { 

     @Override public void onClick(DialogInterface dialog, int which) { } 
       // DO NOTHING 
     }); 

     builder.setCancelable(false); AlertDialog alertdialog = 
     builder.create(); alertdialog.show(); 

} 

回答

0

將標籤添加到您插入的列,並使用相同的標籤值,同時刪除列表和數據庫中的操作。

+0

你有這樣的代碼示例嗎?抱歉。我不知道如何做到這一點。 – droidH 2013-03-08 14:19:02

+0

添加標籤,同時添加DB中的每一行,如「,item_id1,item_id2 ....」。在準備列表視圖時,使用mView.setTag(「item_id1」)將此標記值添加到列表項中。現在,您可以通過使用這些分配的ID而不是索引來識別列表項目。 – ManishL 2013-03-11 07:00:56

+0

我沒有達到你的建議,並最終使用simplecursoradapter。謝謝您的幫助。對不起,我不能投票。我需要更多的聲譽。 – droidH 2013-03-11 07:47:24

相關問題