2

My FragmentPagerAdapter carries the 3 pages of ViewPager.OffScreenPageLimit and always displays the last loaded page

I use ViewPager to display Fragments.

my ViewPager

private static final int MONTH_SIZE = 12;

            viewPager.setAdapter(new CalendarFragmentPagerAdapter(getChildFragmentManager()));
        viewPager.setCurrentItem(GregorianCalendar.getInstance().get(Calendar.MONTH));
        viewPager.setClickable(true);
        viewPager.setSaveEnabled(false);
        viewPager.setOffscreenPageLimit(1);

My FragmentPageAdapter:

    public class CalendarFragmentPagerAdapter extends FragmentPagerAdapter {

    /**
     * @param fm
     */
    public CalendarFragmentPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    /**
     */
    @Override
    public Fragment getItem(int pageRequest) {
        return new CalendarFragment(pageRequest);
    }

    /**
     */
    @Override
    public int getCount() {
        return MONTH_SIZE - 1;
    }

    /**
     */
    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {

        case 0:
            return getString(R.string.monthJanuary);

        case 1:
            return getString(R.string.monthFebruary);

        case 2:
            return getString(R.string.monthMarch);

        case 3:
            return getString(R.string.monthApril);

        case 4:
            return getString(R.string.monthMay);

        case 5:
            return getString(R.string.monthJune);

        case 6:
            return getString(R.string.monthJuly);

        case 7:
            return getString(R.string.monthAugust);

        case 8:
            return getString(R.string.monthSeptember);

        case 9:
            return getString(R.string.monthOctober);

        case 10:
            return getString(R.string.monthNovember);

        case 11:
            return getString(R.string.monthDecember);

        default:
            return "";
        }
    }

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

My Fragment:

// Nothing especial
    List<CalendarEntry> events = getEvents(indexByCalendarFragmentPagerAdapter);

        listView = (ListView) view.findViewById(R.id.listView_calendar_screen);

        listView.setAdapter(new CalendarCustomAdapter(getActivity().getBaseContext(), events));

        listView.setClickable(true);

The error is e.g. displays in the month of May, the events of February

Already tried several ways and could not solve the problem, can someone help me?

Grandpa
  • 63
  • 8

2 Answers2

1

simply change this code or function called getCount() to :

@Override
public int getCount() {
    return events.length;
}
BenMorel
  • 34,448
  • 50
  • 182
  • 322
NoXSaeeD
  • 924
  • 1
  • 7
  • 13
  • put events.length at getCount() will change the size of ViewPager to the number of events of the month – Grandpa Jun 03 '14 at 15:26
-5

I solved with my own PagerAdapter. I used the example code found on the blog Eilfa

Grandpa
  • 63
  • 8