Tôi có một số ListFragment
được hỗ trợ bởi một ArrayAdapter
được điền bởi Loader
. Khi người dùng nhấp vào một trong các mục, tôi muốn chuyển một tham chiếu đến mục đã chọn, cũng như phần còn lại của các mục danh sách tới một đoạn khác. Câu hỏi của tôi là làm thế nào tôi nên nhận được tất cả các mục từ bộ chuyển đổi? Dưới đây là các khả năng mà tôi nhìn thấy:Nhận tất cả các mục từ một ArrayAdapter
1. Giữ một tham chiếu đến sự ủng hộ List
Tạo adapter như vậy:
List<DomainObject> items = new ArrayList<DomainObject>();
listAdapter = new ArrayAdapter<DomainObject>(getActivity(), R.layout.mine, items);
và sau đó chỉ cần vượt qua items
hoặc một bản sao của nó cho hoạt động tiếp theo.
Nhược điểm tôi thấy về điều này là tôi dựa vào thực tế không có giấy tờ rằng cùng một danh sách mà tôi vượt qua để các nhà xây dựng có chứa các mục sau này.
2. Duyệt qua adapter
Khi một mục được nhấp, lặp thông qua bộ chuyển đổi và xây dựng danh sách. Điều này có vẻ như một lượng công việc không cần thiết. Các mục được chứa trong một bộ điều hợp List
trong bộ điều hợp và tôi sẽ sao chép thủ công từng mục vào một danh sách mới.
3. Giữ một danh sách riêng các hạng mục khi thêm vào bộ chuyển đổi
Trước khi thêm một mục vào bộ chuyển đổi, thêm nó vào một danh sách riêng mà tôi duy trì trong đoạn. Điều này cũng lãng phí khi danh sách các mục được sao chép trong ArrayAdapter
và đoạn.
Trong khi bài viết đó là chủ yếu là tốt, tôi sẽ bỏ qua toàn bộ phần an toàn chủ đề của mình. Ông hoàn toàn sai về lý do tại sao có giả sử là khóa (do lọc xảy ra trên một chủ đề nền) và rằng 'ArrayAdapter' sẽ sụp đổ nếu' notifyDataSetChanged() 'được gọi trên bất kỳ thứ gì ngoài luồng UI. –
@ scompt.com Tôi nghĩ rằng liên kết bạn đã đăng là giải thích sai về ArrayAdapter. Nó dường như chỉ giải thích ArrayAdapter. Tôi hơi bối rối ... –
theMfromA
Từ trang bạn đã liên kết ... "Chỉ có thể hiển thị văn bản". => Sai. "Buộc bạn cung cấp danh sách các mục CharSequence ..." => Sai "Yêu cầu bạn cung cấp tài nguyên bố cục chỉ chứa TextView" => Sai. Allmost tất cả các giả định là sai ... Tôi không có nghĩa là ArrayAdapter là tốt hơn so với BaseAdapter nhưng cơ bản là sai. – Loenix