Thứ nhất, tôi không thể xóa (hàng) giao dịch được truy xuất từ cơ sở dữ liệu
Dòng 61 đang truyền kết quả của arg0.getItemAtPosition(arg2)
tới Cursor
, nhưng kiểu trả về có thể là HashMap
(như nó nói trong đầu ra Logcat). Thông thường bạn nhận được một Cursor
từ một truy vấn cơ sở dữ liệu.
Nếu bạn đặt ID cho mỗi hàng cơ sở dữ liệu vào HashMap
khi bạn đang xây dựng nó, thì bạn sẽ có thể chuyển ID đó đến deleteTransaction()
của mình gọi trong onClick
của bạn biến cố. Vì vậy, bạn cần
temp.put("Id", localCursor.getInt(localCursor.getColumnIndex("_id")));
trong getAllTransaction()
, và sau đó sửa đổi onClick()
của bạn phương pháp để làm một cái gì đó như thế này:
localDbCrud.open();
HashMap itemMap = (HashMap)localAdapter.getItem(arg2);
int item_id = Integer.parseInt((String)itemMap.get("Id"));
DbCrud.deleteTransaction(item_id);
localDbCrud.close();
Tôi cũng khuyên bạn nên đổi tên arg2
(và các tên khác) để có tên rõ ràng hơn để mã dễ theo dõi hơn.
Thứ hai, tôi cần biết cách làm mới listview sau khi xóa mục nhập
Bạn có thể gọi notifyDataSetChanged()
trên bộ điều hợp của bạn để làm mới ListView
sau khi bạn đã thực hiện thay đổi đối với tập dữ liệu.
CHỈNH SỬA:Xin lưu ý rằng SimpleAdapter
dành cho dữ liệu tĩnh, vì vậy số dặm của bạn có thể thay đổi. Giải pháp tốt nhất có lẽ là chuyển sang một loại bộ điều hợp khác, chẳng hạn như ArrayAdapter
hoặc tạo SimpleAdapter
mới mỗi khi bạn thay đổi tập dữ liệu.