I have a viewpager and used fragmentpageradapter, now I have 3 fragments and in every fragment I need to make a http request (i.e, hit a api), I don't want to hit all the api for 3 fragments at a time instead I require to hit the api only when the respective page is the current item visible.
I have already tried setting offscreenlimit, but it did not help. What else can I try?
viewPager.setOffscreenLimit(0);
This can be easily done by using OnPageChangeListener provided by ViewPager class
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
// communicate with Fragment here
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
First remove the API calls from onCreateView of fragments, then use this event listener to check which page is selected, according to the selected position you can communicate to the fragment to call the required API.