Първо, не мога да изтрия транзакция (ред), извлечена от базата данни
Ред 61 предава резултата от arg0.getItemAtPosition(arg2)
към Cursor
, но връщаният тип вероятно е HashMap
(както пише в изхода на Logcat). Обикновено получавате Cursor
от заявка за база данни.
Ако поставите идентификатора за всеки ред на базата данни в HashMap
когато го изграждате, тогава ще можете да предадете този идентификатор на вашия deleteTransaction()
извикване във вашия onClick
събитие. Значи имате нужда от
temp.put("Id", localCursor.getInt(localCursor.getColumnIndex("_id")));
в getAllTransaction()
, и след това преразгледайте своя onClick()
метод да направите нещо подобно:
localDbCrud.open();
HashMap itemMap = (HashMap)localAdapter.getItem(arg2);
int item_id = Integer.parseInt((String)itemMap.get("Id"));
DbCrud.deleteTransaction(item_id);
localDbCrud.close();
Бих предложил също да преименувате arg2
(и други) да имат по-ясни имена, така че кодът да е по-лесен за следване.
Второ, трябва да знам как да обновя изгледа на списъка след изтриване на записа
Можете да извикате notifyDataSetChanged()
на вашия адаптер, за да опресните ListView
след като сте направили промяна в набора от данни.
РЕДАКТИРАНЕ:Моля, имайте предвид, че SimpleAdapter
е предназначен за статични данни, така че вашият пробег може да варира. Най-доброто решение вероятно е да преминете към друг тип адаптер, като ArrayAdapter
, или направете нов SimpleAdapter
всеки път, когато промените набора от данни.