package com.mehmetakiftutuncu.eshotroid.adapter; import java.util.Locale; import android.content.Context; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.util.Log; import com.mehmetakiftutuncu.eshotroid.BuildConfig; import com.mehmetakiftutuncu.eshotroid.R; import com.mehmetakiftutuncu.eshotroid.fragment.AllBussesFragment; import com.mehmetakiftutuncu.eshotroid.fragment.FavoriteBussesFragment; import com.mehmetakiftutuncu.eshotroid.fragment.KentKartBalanceFragment; import com.mehmetakiftutuncu.eshotroid.utility.Constants; /** A {@link FragmentPagerAdapter} that returns a fragment corresponding to one * of the sections/tabs/pages * * @author mehmetakiftutuncu */ public class MainPagesFragmentPagerAdapter extends FragmentPagerAdapter { /** {@link Context} of the activity that uses this adapter */ private Context mContext; /** A reference to {@link FavoriteBussesFragment} in the pager */ private FavoriteBussesFragment favoriteBussesFragment; /** A reference to {@link AllBussesFragment} in the pager */ private AllBussesFragment allBussesFragment; /** A reference to {@link KentKartBalanceFragment} in the pager */ private KentKartBalanceFragment kentKartBalanceFragment; /** Tag for debugging */ private static final String LOG_TAG = "Eshotroid_MainPagesFragmentPagerAdapter"; /** Constructor of this adapter * * @param context {@link MainPagesFragmentPagerAdapter#mContext} * @param fm {@link FragmentManager} to manage fragments */ public MainPagesFragmentPagerAdapter(Context context, FragmentManager fm) { super(fm); mContext = context; } /** This method is called to instantiate the fragment for the given page * * @param position Page number whose fragment will be returned */ @Override public Fragment getItem(int position) { // Define a fragment Fragment fragment = null; // Decide which fragment to use switch(position) { case Constants.PAGE_ID_FAVORITE_BUSSES: if(favoriteBussesFragment == null) { if(BuildConfig.DEBUG) Log.d(LOG_TAG, "Creating a new FavoriteBussesFragment..."); favoriteBussesFragment = new FavoriteBussesFragment(); } if(BuildConfig.DEBUG) Log.d(LOG_TAG, "Getting FavoriteBussesFragment..."); fragment = favoriteBussesFragment; break; case Constants.PAGE_ID_ALL_BUSSES: if(allBussesFragment == null) { if(BuildConfig.DEBUG) Log.d(LOG_TAG, "Creating a new AllBussesFragment..."); allBussesFragment = new AllBussesFragment(); } if(BuildConfig.DEBUG) Log.d(LOG_TAG, "Getting AllBussesFragment..."); fragment = allBussesFragment; break; case Constants.PAGE_ID_KENT_KART_BALANCE: if(kentKartBalanceFragment == null) { if(BuildConfig.DEBUG) Log.d(LOG_TAG, "Creating a new KentKartBalanceFragment..."); kentKartBalanceFragment = new KentKartBalanceFragment(); } if(BuildConfig.DEBUG) Log.d(LOG_TAG, "Getting KentKartBalanceFragment..."); fragment = kentKartBalanceFragment; break; } // Return the result return fragment; } /** @return {@link FavoriteBussesFragment} in the pager */ public FavoriteBussesFragment getFavoriteBussesFragment() { return (FavoriteBussesFragment) getItem(Constants.PAGE_ID_FAVORITE_BUSSES); } /** @return {@link AllBussesFragment} in the pager */ public AllBussesFragment getAllBussesFragment() { return (AllBussesFragment) getItem(Constants.PAGE_ID_ALL_BUSSES); } /** @return {@link KentKartBalanceFragment} in the pager */ public KentKartBalanceFragment getKentKartBalanceFragment() { return (KentKartBalanceFragment) getItem(Constants.PAGE_ID_KENT_KART_BALANCE); } /** Returns the number of pages */ @Override public int getCount() { return 3; } /** Returns the number of pages * * @param position Page number whose title will be returned */ @Override public CharSequence getPageTitle(int position) { // Define a result String result = null; // Decide which title to use switch(position) { case Constants.PAGE_ID_FAVORITE_BUSSES: result = mContext.getString(R.string.mainPages_favoriteBusses).toUpperCase(Locale.getDefault()); break; case Constants.PAGE_ID_ALL_BUSSES: result = mContext.getString(R.string.mainPages_allBusses).toUpperCase(Locale.getDefault()); break; case Constants.PAGE_ID_KENT_KART_BALANCE: result = mContext.getString(R.string.mainPages_kentKartBalance).toUpperCase(Locale.getDefault()); break; } // Return the result return result; } }