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.