package org.gdg.frisbee.android.chapter; import android.content.Context; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentPagerAdapter; import org.gdg.frisbee.android.R; import org.gdg.frisbee.android.api.model.Chapter; import org.gdg.frisbee.android.eventseries.GdgEventListFragment; class ChapterFragmentPagerAdapter extends FragmentPagerAdapter { private static final int[] PAGES = { R.string.news, R.string.info, R.string.events, R.string.for_leads }; private final Context context; private final Chapter selectedChapter; private boolean isOrganizer; ChapterFragmentPagerAdapter(FragmentActivity activity, Chapter selectedChapter, boolean isOrganizer) { super(activity.getSupportFragmentManager()); this.context = activity; this.selectedChapter = selectedChapter; this.isOrganizer = isOrganizer; } public void setOrganizer(boolean organizer) { isOrganizer = organizer; notifyDataSetChanged(); } @Override public int getCount() { return isOrganizer ? 4 : 3; } @Override public Fragment getItem(int position) { switch (position) { case 0: return NewsFragment.newInstance(selectedChapter.getGplusId()); case 1: return InfoFragment.newInstance(selectedChapter.getGplusId()); case 2: return GdgEventListFragment.newInstance(selectedChapter.getGplusId()); case 3: return new LeadFragment(); default: throw new IllegalStateException("Unknown page in MainActivity" + position); } } @Override public CharSequence getPageTitle(int position) { if (0 <= position && position < PAGES.length) { return context.getString(PAGES[position]); } else { return ""; } } @Override public long getItemId(int position) { if (position == 3) { return position; } return selectedChapter.hashCode() * 10 + position; } boolean isOrganizerFragmentShown() { return isOrganizer; } }