Pertama, saya tidak dapat menghapus transaksi (baris) yang diambil dari database
Baris 61 menampilkan hasil arg0.getItemAtPosition(arg2) ke Cursor , tetapi tipe pengembaliannya mungkin HashMap (seperti yang tertulis di output Logcat). Biasanya Anda mendapatkan Cursor dari kueri basis data.
Jika Anda memasukkan ID untuk setiap baris database ke dalam HashMap saat Anda membuatnya, Anda akan dapat meneruskan ID tersebut ke deleteTransaction() Anda hubungi onClick . Anda peristiwa. Jadi, Anda perlu
temp.put("Id", localCursor.getInt(localCursor.getColumnIndex("_id")));
di getAllTransaction() , lalu revisi onClick() . Anda metode untuk melakukan sesuatu seperti ini:
localDbCrud.open();
HashMap itemMap = (HashMap)localAdapter.getItem(arg2);
int item_id = Integer.parseInt((String)itemMap.get("Id"));
DbCrud.deleteTransaction(item_id);
localDbCrud.close();
Saya juga menyarankan mengganti nama arg2 (dan lainnya) untuk memiliki nama yang lebih jelas sehingga kode lebih mudah diikuti.
Kedua, saya perlu tahu cara menyegarkan tampilan daftar setelah menghapus entri
Anda dapat memanggil notifyDataSetChanged() pada adaptor Anda untuk menyegarkan ListView setelah Anda membuat perubahan pada set data.
EDIT:Harap perhatikan bahwa SimpleAdapter dimaksudkan untuk data statis, jadi jarak tempuh Anda mungkin berbeda. Solusi terbaik mungkin adalah beralih ke jenis adaptor yang berbeda, seperti ArrayAdapter , atau buat SimpleAdapter baru setiap kali Anda mengubah kumpulan data.