2013-08-20 34 views
10

Tôi đang sử dụng ViewPager chứa 3 đoạn, mỗi đoạn sẽ tải một danh sách. Vấn đề là khi ứng dụng chạy lần đầu tiên và tôi vuốt đến đoạn tiếp theo, đoạn này cần đôi khi để tải (khoảng 2 giây) trước khi hiển thị chế độ xem của nó. Đây là một hành vi rất kỳ lạ. Tất cả những gì tôi muốn là một khi ứng dụng đã bắt đầu, tất cả các mảnh trong ViewPager sẽ sẵn sàng cho người dùng vì vậy khi họ vuốt qua các đoạn, không có thời gian chờ đợi. Làm thế nào tôi có thể làm điều đó?Xem trước đoạn của khung nhìn trong ViewPager khi chạy lần đầu tiên

+0

Bạn đang sử dụng FragmentPageAdapter hoặc FragmentStatePageAdapter? – Delyan

+0

Những gì bạn có thể xem xét làm là bộ nhớ đệm bộ điều hợp danh sách mảnh trong hoạt động (hoặc trong máy nhắn tin). Điều đó sẽ ngăn không cho các adapter được tải lại trên mỗi thay đổi của trang. – AedonEtLIRA

+0

@Delyan tôi sử dụng FragmentPagerAdapter –

Trả lời

28

Chỉ cần gọi setOffscreenPageLimit() trong onCreate() (sau khi khởi tạo ViewPager). OffscreenPageLimit đặt số trang cần được giữ lại ở hai bên của trang hiện tại (trong trường hợp của bạn là 2). Với tất cả các mảnh vỡ của bạn sẽ được nhanh chóng.

(Một khác (rất khuyến khích) khả năng là để tăng hiệu suất của danh sách hoặc listadapters của bạn, bởi vì một thời gian tải của 2 giây không có âm thanh tốt)

+0

Trên thực tế, đặt nó thành '2' sẽ đảm bảo tất cả 3 đoạn được lưu giữ xung quanh. Giá trị đặt số lượng trang sẽ được giữ lại thành ** ở hai bên của trang hiện tại **, không phải tổng số trang. –

+0

Vâng, tôi biết. Nhưng bạn cũng có thể đặt giới hạn thành '100' và nó vẫn hoạt động ;-) Đây chỉ là một ví dụ, tất nhiên anh ta có thể đặt giới hạn thành' 2' nếu anh ta muốn. – Namenlos

+1

Trong trường hợp đó, tại sao nói * "trong trường hợp của bạn ** 3 **" * trong câu trả lời của bạn? Điều đó không đúng, và nó báo hiệu cho tôi rằng bạn không biết, đó là lý do tại sao tôi ban đầu thêm một bình luận để chỉ ra điều đó. –

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