SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Usuń zapytanie i odśwież w ListView w Androidzie (sqlite)

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę wstawić obraz do bazy danych sqlite?

  2. SQLite - Importuj dane z pliku CSV

  3. Usuwanie elementu z ListView i bazy danych za pomocą OnItemClickListener

  4. SQLite COUNT

  5. Usuń SQLite