How to dynamically change fragment in ViewPager?

Viewed 2340

I have created 6 fragments. First 3 fragments will load in viewPager at morning time and other 3 fragment will come in evening time. How to dynamically update the viewPager with the desired set of fragments according to time ? Here is my MainActivity code. I have implemented the first 3 fragments in the viewPager. But how to load the other 3 fragments in the viewPager ?

MainActivity:

mViewPager = (ViewPager) findViewById(R.id.container);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        // adding bottom dots
        addBottomDots(0);

        mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                MyFragmentInterface fragmentInterface = (MyFragmentInterface) mSectionsPagerAdapter.instantiateItem(mViewPager, position);
                if (fragmentInterface != null) {
                    fragmentInterface.fragmentBecomeVisible();
                    Log.e("PageSelected", position + "");
                }
                addBottomDots(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

    private class SectionsPagerAdapter extends FragmentStatePagerAdapter {

        SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            // getItem is called to instantiate the fragment for the given page.
            // Return a PlaceholderFragment (defined as a static inner class below).
            switch (position) {
                case 0: {
                    return new Fragment1();
                }
                case 1: {
                    return new Fragment2();
                }
                case 2: {
                    return new Fragment3();
                }
            }

            return null;

        }

        @Override
        public int getItemPosition(Object object) {
            return POSITION_NONE;
        }

        @Override
        public int getCount() {
            // Show 3 total pages.
            return totalTabs;
        }
    }

How to load the other 3 fragments at evening time ?

UPDATE: Looking after the solutions one issue I think will arise. What if the user is using the application since morning. Will the fragments get updated at 12:05PM at realtime ?

4 Answers
Related