Tôi đã có một ListView với một BaseAdapter tùy chỉnh. Các mục danh sách chứa các Hộp kiểm cần phải đại diện cho một thuộc tính từ cơ sở dữ liệu.Android ListView with Checkbox: tự động bỏ chọn
Tôi sử dụng CheckBox.setOnCheckedChangeListener với một OnCheckedChangeListener mới để phát hiện các thay đổi, vì vậy tôi có thể thay đổi cơ sở dữ liệu dựa trên trạng thái hiện tại của CheckBox. Khá đơn giản cho đến nay.
Tuy nhiên, khi cuộn xuống dưới danh sách, các hộp kiểm đã chọn trước đó sẽ không được chọn. Tôi nghi ngờ điều này xảy ra ngay khi các khung nhìn được tái chế (tôi đang sử dụng kỹ thuật convertView/ViewHolder).
Tôi làm cách nào để ngăn điều này? Có chuyện gì vậy?
Xin cảm ơn trước.
Chỉnh sửa: Để làm cho mọi việc rõ ràng hơn một chút, vấn đề là tái chế xem bằng cách nào đó gọi OnCheckedChangeListener # onCheckedChanged (buttonView, isChecked) với isChecked == false.
Tôi đã gặp sự cố tương tự khi sử dụng hộp kiểm trong chế độ xem con của một danh sách ExpandableListView và mẹo của bạn cũng có tác dụng đối với tôi. Tôi đã phải đặt điều này trong getChildView (..), nơi tôi kiểm tra xem chúng ta có đang tái chế không (ví dụ, convertView không phải là null), và đặt OnCheckedChangeListener của hộp kiểm thành null trong trường hợp đó. Cảm ơn các giải pháp. –
Tôi gặp vấn đề tương tự, nhưng tôi không biết cách khắc phục: http://stackoverflow.com/questions/4586442/listview-from-cursor-with-checkbox bất kỳ ý tưởng nào? – ekawas
Tôi biết một chủ đề cũ của nó nhưng tôi có cùng một vấn đề. Có vẻ như phương thức onCheckedChangeListener được gọi ngẫu nhiên. Chính xác những gì bạn có ý nghĩa của checkbox.setOnCheckedChangeListener (null)? Đó là null mà confuses tôi! Hãy xem mã của tôi nếu bạn muốn: http://stackoverflow.com/questions/5444355/android-listview-with-checkbox-problem – mixkat