2010-03-21 46 views
5

Tôi có một ListView với nhiều mục lựa chọn, nơi một số được kiểm tra ngay từ đầu bằng cách sử dụngmục Wrong kiểm tra khi lọc ListView trong Android

setItemChecked(position, true); 

tôi kết hợp này với tùy chọn lọc

setTextFilterEnabled(true) 

vì vậy nó dễ dàng tìm thấy một mục cụ thể trong danh sách.

Vấn đề là khi tôi lọc danh sách các mục chuyển đổi vị trí trong chế độ xem danh sách. Lấy ví dụ ba mục: 'A', 'B' và 'C' trong đó 'C' được kiểm tra trước (tức là mục nhập ở vị trí 3 trong danh sách). Khi tôi nhập 'C' trên bàn phím, chỉ mục 'C' mới được hiển thị (như dự định). Bây giờ 'C' không được kiểm tra nữa, vì mục nhập đã di chuyển từ vị trí đã chọn 3 đến vị trí không được chọn 1 trong danh sách.

Hành vi này dẫn đến một số hiệu ứng không được hoan nghênh trong ứng dụng. Có cách nào để "di chuyển lựa chọn bằng cách lọc", tức là gắn kết trạng thái đã chọn với mục nhập và không đến vị trí ban đầu của nó trong danh sách không? Hay tôi cần tìm một cách tiếp cận mới?

Cảm ơn,

Linus

+0

Đau khổ từ cùng một vấn đề. Tôi biết nó đã được lâu, nhưng bạn đã quản lý để giải quyết vấn đề này? –

+0

@ liorry: Tôi không thực sự nhớ, nhưng tôi nghĩ rằng tôi đã đi với đề nghị trong câu trả lời được chấp nhận. Cách đây đã lâu :) – aspartame

+0

haha ​​OK. Tôi mặc dù có thể bạn có thể chia sẻ mã ... Tôi đã sử dụng đề xuất nhưng một cái gì đó không làm việc cho tôi ... oh well, Thanks anyway;) –

Trả lời

3

Duy trì một danh sách các mục đã chọn, và bất cứ khi nào danh sách được repopulated kiểm tra nếu đó id (không xác định vị trí) tồn tại trong danh sách, và thiết lập như chọn.

+0

CAn bạn vui lòng giải thích nó bằng cách sử dụng mã? – user2699728

0

Có, hành vi này là do ListView giữ vị trí dưới dạng tham chiếu đến các mục đã chọn. Điều này có nghĩa là ngay cả đối với các bộ điều hợp có ID ổn định, vùng chọn được gắn với vị trí (đã được lọc ra trong trường hợp của bạn). Như được đề xuất, triển khai một số bản đồ/tập hợp tùy chỉnh để giữ ID được kiểm tra và cấp chúng cho bộ điều hợp.

Các vấn đề liên quan