Tôi có một ListView trong một ListActivity ràng buộc với một số dữ liệu. Tôi có một nhà cung cấp nội dung cung cấp dữ liệu.Android ListView Live Đang cập nhật
Các ListActivity được các dữ liệu bằng cách truy vấn một trình giải quyết nội dung:
Uri uri = Uri.parse("content://my.provider.DocumentProvider/mystuff");
contentCursor = this.getContentResolver().query(uri, null, null, null, null);
Bây giờ hoạt động có con trỏ. Nó tạo ra một bộ chuyển đổi và gắn nó vào danh sách:
ListAdapter adapter = new DocumentListCursorAdapter(this, R.layout.main_row_layout, contentCursor, new String[] { "titleColumn" }, new int[] { titleColumnIndex });
setListAdapter(adapter);
Điều này làm việc tốt; danh sách hiển thị dữ liệu trong con trỏ.
Nhưng giờ đây, nhà cung cấp nội dung có dữ liệu mới. Tôi muốn danh sách cập nhật để hiển thị dữ liệu mới.
Các ví dụ mà tôi đã thấy liên quan đến một cuộc gọi đến thông báo của bộ điều hợpDataSetChanged, nhưng dường như với tôi rằng điều này sẽ phá vỡ sự tách biệt giữa nhà cung cấp nội dung và danh sách đang tiêu thụ nội dung.
Nhà cung cấp nội dung có cần biết bộ điều hợp nào được gắn vào con trỏ để nó có thể gọi phương thức notifyDataSetChanged của họ không? Hoặc là có một cách tốt hơn mà không nhìn thấy hai điều này kết hợp theo cách này.
Bạn đã xem http://developer.android.com/reference/android/content/ContentResolver.html#notifyChange%28android.net.Uri,%20android.database.ContentObserver,%20boolean%29? – Luksprog
Tôi đã thử đăng ký với registerContentObserver, nhưng không thấy thay đổi nào xuất hiện khi con trỏ thay đổi. Điều đó có hiệu quả không? – stevex
giống như slukian, cộng với bạn có thể cần 'contentCursor.setNotificationUri (cr, uri);' – njzk2