Search code examples
androidandroid-fragmentsandroid-viewpager

Hitting API request in ViewPager Fragment


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);

Solution

  • 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.