package de.lukasniemeier.mensa.ui.adapter; import android.app.ActionBar; import android.content.Context; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import de.lukasniemeier.mensa.model.WeeklyMenu; /** * Created on 26.11.13. */ public class NavigationAdapter extends FragmentPagerAdapter { private final ViewPager pager; private final Context context; private final ActionBar actionBar; private final FragmentManager fragmentManager; private NavigationAdapterState state; public NavigationAdapter(ViewPager viewPager, Context context, final ActionBar actionBar, FragmentManager fragmentManager) { super(fragmentManager); this.pager = viewPager; this.context = context; this.actionBar = actionBar; this.fragmentManager = fragmentManager; this.state = new NavigationAdapterState(this, context) { @Override public Fragment getItem(int position) { return null; } @Override public int getItemPosition(Object object) { return POSITION_NONE; } @Override public int getCount() { return 0; } }; pager.setAdapter(this); } public ActionBar getActionBar() { return actionBar; } public ViewPager getPager() { return pager; } public void displayMenu(WeeklyMenu menu, int initialMenuIndex) { int pageToSelect = state.displayMenu(menu, initialMenuIndex); notifyDataSetChanged(); pager.setCurrentItem(pageToSelect, true); } public void displayError(String errorMessage) { state.displayError(errorMessage); notifyDataSetChanged(); } public void setState(NavigationAdapterState newState) { this.state = newState; } @Override public Fragment getItem(int position) { return state.getItem(position); } @Override public int getItemPosition(Object object) { return state.getItemPosition(object); } @Override public long getItemId(int position) { // return a state-scoped unique hash return (((long)state.hashCode()) << 32) | (getItem(position).hashCode() & 0xffffffffL); } @Override public int getCount() { return state.getCount(); } }