Po pierwsze, nie mogę usunąć transakcji (wiersza) pobranej z bazy danych
Linia 61 rzutuje wynik arg0.getItemAtPosition(arg2)
do Cursor
, ale typ zwracany to prawdopodobnie HashMap
(jak mówi w danych wyjściowych Logcat). Zwykle otrzymujesz Cursor
z zapytania do bazy danych.
Jeśli umieścisz identyfikator dla każdego wiersza bazy danych w HashMap
kiedy go budujesz, będziesz mógł przekazać ten identyfikator do swojego deleteTransaction()
zadzwoń w swoim onClick
wydarzenie. Więc potrzebujesz
temp.put("Id", localCursor.getInt(localCursor.getColumnIndex("_id")));
w getAllTransaction()
, a następnie popraw swoją onClick()
sposób na zrobienie czegoś takiego:
localDbCrud.open();
HashMap itemMap = (HashMap)localAdapter.getItem(arg2);
int item_id = Integer.parseInt((String)itemMap.get("Id"));
DbCrud.deleteTransaction(item_id);
localDbCrud.close();
Sugerowałbym również zmianę nazwy arg2
(i innych), aby mieć jaśniejsze nazwy, aby łatwiej było śledzić kod.
Po drugie, muszę wiedzieć, jak odświeżyć widok listy po usunięciu wpisu
Możesz wywołać notifyDataSetChanged()
na karcie, aby odświeżyć ListView
po wprowadzeniu zmian w zbiorze danych.
EDYCJA:Pamiętaj, że SimpleAdapter
jest przeznaczony do danych statycznych, więc Twój przebieg może się różnić. Najlepszym rozwiązaniem jest prawdopodobnie przejście na inny typ adaptera, taki jak ArrayAdapter
lub utwórz nowy SimpleAdapter
za każdym razem, gdy zmieniasz zbiór danych.