2014-01-13 74 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并使用它。

不要忘记从数据库中删除后从列表中删除

相关问题