2014-01-13 3 views
1

Я начинаю изучать, как работать с базой данных SQL и ContentProviders. Я разрабатываю приложение, которое состоит из ListActivity, где у меня есть некоторые элементы. Я знаю, как вставить новый элемент в базу данных, но проблема в том, что ...Обновление/удаление элемента в списке из базы данных

Когда я хочу обновить или удалить один элемент, я долго нажимаю на него, а на ContextMenu выбираю один из вариантов выбора.

Это методы для обновления/удаления элемента с помощью Content Provider:

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); 

Я не уверен, если это правильно, но я вижу, что я должен передать идентификатор элемента для обновления или удалить его. Я сомневаюсь, как получить идентификатор одного элемента?

+0

Не передавайте идентификатор элемента списка. u необходимо передать другое уникальное значение для обновления или удаления из базы данных. – Andrain

+0

Строка selectedFromList = (String) (lv.getItemAtPosition (позиция)); , пожалуйста, проверьте это – dipali

+0

в этой строке, вы можете получить значение строки, а затем вы можете найти уникальный идентификатор из этого метода .. но вы должны создать метод getter/setter – dipali

ответ

1

Обычно мы будем делать Somthing как этот

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

// Getters and setters for the insatance variables 
} 

Для каждого ListItem мы будем удерживать объект DataHolder затем хранить это в ArrayList<DataHolder>

Тогда на OnItemClick вы можете получить позицию elemnt и получить объект от ArrayList и получите id и используйте его.

Не забудьте удалить из списка после удаления из db

Смежные вопросы