import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.PagerAdapter; import java.lang.ref.WeakReference; import java.util.ArrayList; public class DynamicPagerAdapter extends FragmentStatePagerAdapter{ private ArrayList<WeakReference<Fragment>> registeredFragments = new ArrayList<WeakReference<Fragment>>(); public TouchPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { WeakReference<Fragment> weakReference = registeredFragments.get(position); return weakReference.get(); } @Override public int getCount() { return registeredFragments.size(); } @Override public int getItemPosition(Object object){ return PagerAdapter.POSITION_NONE; } public void add(Fragment f){ registeredFragments.add(new WeakReference<Fragment>(f)); notifyDataSetChanged(); } public void remove(int position){ registeredFragments.remove(position); notifyDataSetChanged(); } }
Example :
pagerAdapter = new DinamicPagerAdapter(getSupportFragmentManager()); viewPager = (ViewPager) findViewById(R.id.viewpager); viewPager.setAdapter(pagerAdapter); pagerAdapter.add(TouchMapFragment.newInstance()); pagerAdapter.add(GridFragment.newInstance()); pagerAdapter.remove(0); pagerAdapter.add(TouchMapFragment.newInstance()); pagerAdapter.remove(0); pagerAdapter.add(GridFragment.newInstance());pagerAdapter = new DinamicPagerAdapter(getSupportFragmentManager());viewPager = (ViewPager) findViewById(R.id.viewpager);viewPager.setAdapter(pagerAdapter);pagerAdapter.add(TouchMapFragment.newInstance());pagerAdapter.add(GridFragment.newInstance());pagerAdapter.remove(0);pagerAdapter.add(TouchMapFragment.newInstance());pagerAdapter.remove(0);pagerAdapter.add(GridFragment.newInstance());
domingo, 17 de noviembre de 2013
Dynamic FragmentStatePagerAdapter
Here is an example of how to make a PagerAdapter that can add and remove fragments dynamically.
Suscribirse a:
Entradas (Atom)