Я знаю, что этот вопрос задавался много раз, но многие из ответов, которые я нашел, были неудовлетворительными.
У меня есть Baseadapter, который отображает список через базу данных.Информация передается из базы данных в список через курсор, который добавляет курсор к массиву списков, который затем заполняет представление списка.Я хотел бы удалить элемент списка через контекстное меню и удалить его из списка и базы данных.В настоящее время я использую объект adaptercontextmenuinfo для получения позиции и / или идентификатора, который я передаю методу удаления в классе базы данных, но info.id не соответствует _id базы данных.В настоящее время я могу успешно удалить запись строки из listadapter, но НЕ из базы данных.Любая помощь приветствуется.(примечание: в моей базе данных есть 3 столбца, первый из которых _id) ContextMenu java:
@Override
public boolean onContextItemSelected(MenuItem item) {
if(item.getTitle() == "Delete"){ //if "delete" is selected
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
dba.deleteRow(info.id);
DATA.remove(info.position);
adapter.notifyDataSetChanged();
Метод удаления строки базы данных:
public void deleteRow(long rowId){
db = dbhelper.getWritableDatabase();
try{
db.delete(Constants.TABLE_NAME, Constants.KEY_ID + "="+rowId,null);
}catch(Exception e){
}
}
Я знаю, что задействовано много кодаВот.Если вы хотите больше, дайте мне знать.Спасибо за вашу помощь!