2014-01-13 101 views
1

我開始學習如何使用SQL數據庫和ContentProviders。我正在開發一個應用程序,它包含一個ListActivity,其中包含一些項目。我知道如何在數據庫中插入新元素,但問題是...從數據庫更新/刪除列表視圖中的元素

當我想更新或刪除一個元素時,我長時間點擊它並在ContextMenu上選擇一個展位選項。

這些更新/通過內容提供商刪除項目的方法:

public void updateTravel(String city, String country, int year, String note, String id { 
    ContentValues updateValues = new ContentValues(); 
    updateValues.put(Travels.CITY, city); 
    updateValues.put(Travels.COUNTRY, country); 
    updateValues.put(Travels.YEAR, year); 
    updateValues.put(Travels.NOTE, note); 

    getContentResolver().update(TravelsProvider.CONTENT_URI, updateValues, Travels._ID+"="+id, null); 
} 

private void deleteTravel(String id){ 
    getContentResolver().delete(TravelsProvider.CONTENT_URI, Travels._ID+"="+id, null); 

我不知道這是否是正確的,但我知道我必須通過元素的ID更新或刪除它。我的疑問是,我如何獲得一個物品的ID?

+0

不要傳遞listview項的id。你必須傳遞另一個唯一的值來更新或從數據庫中刪除。 – Andrain

+0

String selectedFromList =(String)(lv.getItemAtPosition(position)); 請在這一行中檢查這個 – dipali

+0

你可以得到字符串的值,然後你可以從這個方法中找到唯一的ID ..但你必須創建getter/setter方法 – dipali

回答

1

通常情況下,我們會做這樣的

public class DataHolder 
{ 
private int id; 
private String data; 

// Getters and setters for the insatance variables 
} 

對於每一個的listItem我們將舉行的DataHolder一個對象,然後這個存儲在一個ArrayList<DataHolder>

財產以後然後在OnItemClick你可以得到elemnt的位置,並得到從ArrayList的對象,並獲得id並使用它。

不要忘記從數據庫中刪除後從列表中刪除

相關問題