package org.itsnat.itsnatdroidtest.testact; /** * Created by jmarranz on 12/08/14. */ import android.app.Fragment; import android.app.FragmentManager; import android.content.res.Resources; import android.support.v13.app.FragmentPagerAdapter; import org.itsnat.itsnatdroidtest.R; import java.util.ArrayList; import java.util.Locale; /** * A {@link android.support.v13.app.FragmentPagerAdapter} that returns a fragment corresponding to * one of the sections/tabs/pages. */ public class TestActivityPagerAdapter extends FragmentPagerAdapter { protected ArrayList<TestActivityTabFragment> fragmentArray; protected Resources resources; public TestActivityPagerAdapter(FragmentManager fm,Resources resources) { super(fm); this.resources = resources; this.fragmentArray = new ArrayList<TestActivityTabFragment>(getCount()); for(int i = 0; i < getCount(); i++) fragmentArray.add( TestActivityTabFragment.newInstance(i + 1) ); } @Override public Fragment getItem(int position) { return fragmentArray.get(position); } @Override public int getCount() { return 3; } @Override public CharSequence getPageTitle(int position) { Locale l = Locale.getDefault(); switch (position) { case 0: return resources.getString(R.string.title_tab1).toUpperCase(l); case 1: return resources.getString(R.string.title_tab2).toUpperCase(l); case 2: return resources.getString(R.string.title_tab3).toUpperCase(l); } return null; } public int getItemPosition(Object item) { // Solución inspirada en: // http://stackoverflow.com/questions/10849552/android-viewpager-cant-update-dynamically/10852046#10852046 // https://code.google.com/p/android/issues/detail?id=19001 // Si se quieren añadir y/o eliminar tabs es mejor derivar de FragmentStatePagerAdapter (creo) TestActivityTabFragment fragment = (TestActivityTabFragment)item; if (fragment.changed) { int res = POSITION_NONE; // Hace que se pida de nuevo en getItem(int) y se revisualice fragment.changed = false; return res; } else { return POSITION_UNCHANGED; } } }