SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Xóa truy vấn và làm mới trong ListView trong Android (sqlite)

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite KHÔNG ĐỦ

  2. Chèn hoặc cập nhật SQLite cho Android

  3. Làm thế nào để truy xuất ngày của mms từ nội dung:// mms.

  4. Giao dịch SQLite

  5. Android - Cách tiếp cận tốt hơn trong việc tải hình ảnh thẻ SD CARD