Tôi gặp sự cố tương tự ... Tôi đã sử dụng người nghe. Tuy nhiên, khi bạn vuốt hai trang trở lại để trở lại nó đã bị tụt hậu ... Tôi đã làm một cái gì đó như thế này để cải thiện trải nghiệm ....
viewpager.setOnPageChangeListener(new OnPageChangeListener() {
int positionCurrent;
boolean dontLoadList;
@Override
public void onPageScrollStateChanged(int state) {
if(state == 0){ // the viewpager is idle as swipping ended
new Handler().postDelayed(new Runnable() {
public void run() {
if(!dontLoadList){
//async thread code to execute loading the list...
}
}
},200);
}
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
positionCurrent = position;
if(positionOffset == 0 && positionOffsetPixels == 0) // the offset is zero when the swiping ends{
dontLoadList = false;
}
else
dontLoadList = true; // To avoid loading content for list after swiping the pager.
}
}
Nếu bạn mất vài giây để tải danh sách đi kèm bổ sung cho viewpager, ok của nó trong điều khoản của UX thay vì đưa ra một kinh nghiệm swiping xấu ... Vì vậy, ý tưởng là để chờ 400ms trong thread trước khi tải danh sách và đảm bảo rằng bạn thực sự không tải nội dung khi người dùng là cố gắng vuốt nhanh để xem nội dung của người xem ...
tôi đã nhận xét cuộc gọi setAdapter và cuộc gọi được mượt mà hơn. onPageSelected là một ý tưởng tốt nhưng tôi chỉ nhận được số vị trí, làm thế nào để có được trường hợp hiện tại của Fragment – metinkale38
@ metinkale38 Nó phụ thuộc vào loại adapter bạn sử dụng, xem hai câu trả lời hàng đầu trong câu hỏi này http://stackoverflow.com/question/7379165/update-data-in-listfragment-as-part-of-viewpager? answerertab = votes # tab-top – Luksprog
cảm ơn bạn OnPageChangeListener là một ý tưởng hay, mượt mà hơn trước, nếu tôi không vuốt 2 trang ngay lập tức sau mỗi khác. Trên liên kết của bạn, tôi tìm thấy liên kết này: http://tamsler.blogspot.nl/2011/11/android-viewpager-and-fragments-part-ii.html và tôi đã sử dụng phương pháp thứ 2 để có được ví dụ Fragment – metinkale38