Java tutorial
/* * Copyright 2015 sourcestream GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.sourcestream.movieDB.adapter; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.res.Resources; import android.os.Bundle; import android.support.v13.app.FragmentPagerAdapter; import android.view.ViewGroup; import de.sourcestream.movieDB.R; import de.sourcestream.movieDB.controller.TVList; /** * The {@link android.support.v4.view.PagerAdapter} used to display pages in this sample. * The individual pages are simple and just display two lines of text. The important section of * this class is the {@link #getPageTitle(int)} method which controls what is displayed in the * {@link de.sourcestream.movieDB.view.SlidingTabLayout}. */ public class TVSlideAdapter extends FragmentPagerAdapter { private String[] navMenuTitles; private FragmentManager manager; private FragmentTransaction mCurTransaction = null; private Resources res; public TVSlideAdapter(FragmentManager fm, Resources res) { super(fm); this.manager = fm; navMenuTitles = res.getStringArray(R.array.tvTabs); this.res = res; } /** * Return the number of views available. */ @Override public int getCount() { return 4; } /** * Return the Fragment associated with a specified position. * @param position Position within this adapter * @return Unique identifier for the item at position */ @Override public Fragment getItem(int position) { String onTheAir = "tv/on_the_air"; String airingToday = "tv/airing_today"; String popular = "tv/popular"; String topRated = "tv/top_rated"; Bundle args = new Bundle(); switch (position) { case 0: args.putString("currentList", "onTheAir"); TVList onTheAirList = new TVList(); onTheAirList.setTitle(res.getString(R.string.tvTitle)); onTheAirList.setArguments(args); onTheAirList.setCurrentList(onTheAir); return onTheAirList; case 1: args.putString("currentList", "airingToday"); TVList airingTodayList = new TVList(); airingTodayList.setTitle(res.getString(R.string.tvTitle)); airingTodayList.setArguments(args); airingTodayList.setCurrentList(airingToday); return airingTodayList; case 2: args.putString("currentList", "popular"); TVList popularList = new TVList(); popularList.setTitle(res.getString(R.string.tvTitle)); popularList.setArguments(args); popularList.setCurrentList(popular); return popularList; case 3: args.putString("currentList", "topRated"); TVList topRatedList = new TVList(); topRatedList.setTitle(res.getString(R.string.tvTitle)); topRatedList.setArguments(args); topRatedList.setCurrentList(topRated); return topRatedList; default: return null; } } /** * This method may be called by the ViewPager to obtain a title string to describe the specified page. * @param position The position of the title requested * @return A title for the requested page */ @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: return navMenuTitles[0]; case 1: return navMenuTitles[1]; case 2: return navMenuTitles[2]; case 3: return navMenuTitles[3]; default: return navMenuTitles[1]; } } /** * @param container - our Viewpager * Fired when we are in Movie or TV details and we pressed back button. * Recreates our fragments. */ public void reAttachFragments(ViewGroup container) { if (mCurTransaction == null) { mCurTransaction = manager.beginTransaction(); } for (int i = 0; i < getCount(); i++) { final long itemId = getItemId(i); // Do we already have this fragment? String name = "android:switcher:" + container.getId() + ":" + itemId; Fragment fragment = manager.findFragmentByTag(name); if (fragment != null) { mCurTransaction.detach(fragment); } } mCurTransaction.commit(); mCurTransaction = null; } }