sql >> Databáze >  >> RDS >> SQLite

Smazat dotaz a obnovit v ListView v Androidu (sqlite)

Za prvé, nejsem schopen smazat transakci (řádek) načtenou z databáze

Řádek 61 přenáší výsledek arg0.getItemAtPosition(arg2) na Cursor , ale návratový typ je pravděpodobně HashMap (jak je uvedeno ve výstupu Logcat). Normálně získáte Cursor z databázového dotazu.

Pokud vložíte ID pro každý řádek databáze do HashMap až jej budete vytvářet, budete moci toto ID předat do deleteTransaction() zavolejte do svého onClick událost. Takže potřebujete

temp.put("Id", localCursor.getInt(localCursor.getColumnIndex("_id")));

v getAllTransaction() a poté revidujte onClick() způsob, jak udělat něco takového:

localDbCrud.open();
HashMap itemMap = (HashMap)localAdapter.getItem(arg2);
int item_id = Integer.parseInt((String)itemMap.get("Id"));
DbCrud.deleteTransaction(item_id);
localDbCrud.close();

Také bych navrhoval přejmenovat arg2 (a další), aby měli jasnější názvy, aby bylo snazší sledovat kód.

Za druhé, potřebuji vědět, jak obnovit zobrazení seznamu po smazání záznamu

Můžete zavolat notifyDataSetChanged() na vašem adaptéru a obnovte ListView poté, co provedete změnu v datové sadě.

EDIT:Vezměte prosím na vědomí, že SimpleAdapter je určen pro statická data, takže se vaše kilometry mohou lišit. Nejlepším řešením je pravděpodobně přejít na jiný typ adaptéru, například ArrayAdapter nebo vytvořte nový SimpleAdapter pokaždé, když změníte datovou sadu.




  1. Má Oracle ekvivalent proměnných tabulek SQL Serveru?

  2. Jak vytvořit trasování SQL pro zachycení událostí serveru SQL

  3. Vygenerujte řadu dat – jako vstup použijte typ data

  4. Jak FIND_IN_SET() funguje v MariaDB