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.