Android开发BasePagerAdapter
有个基类的PagerAdapter 方便很多
public class BasePagerAdapter extends FragmentPagerAdapter {private static final String TAG = "FragmentPagerAdapter";private static final boolean DEBUG = false;private final FragmentManager mFragmentManager;private FragmentTransaction mCurTransaction = null;private Fragment mCurrentPrimaryItem = null;private List<? extends BaseFragment> fragments;private Context mContext;public BasePagerAdapter(Context mContext, FragmentManager fm, List<? extends BaseFragment> fragments) {super(fm);this.mContext = mContext;mFragmentManager = fm;this.fragments = fragments;}@Overridepublic int getCount() {return fragments.size();}/*** Return the Fragment associated with a specified position.*/public BaseFragment getItem(int position) {return fragments.get(position);}@Overridepublic void startUpdate(ViewGroup container) {}@Overridepublic Object instantiateItem(ViewGroup container, int position) {if (mCurTransaction == null) {mCurTransaction = mFragmentManager.beginTransaction();}final long itemId = getItemId(position);// Do we already have this fragment?String name = makeFragmentName(container.getId(), itemId);Fragment fragment = mFragmentManager.findFragmentByTag(name);if (fragment != null) {if (DEBUG) Log.v(TAG, "Attaching item #" + itemId + ": f=" + fragment);mCurTransaction.show(fragment);} else {fragment = getItem(position);if (DEBUG) Log.v(TAG, "Adding item #" + itemId + ": f=" + fragment);mCurTransaction.add(container.getId(), fragment,makeFragmentName(container.getId(), itemId));}if (fragment != mCurrentPrimaryItem) {fragment.setMenuVisibility(false);fragment.setUserVisibleHint(false);}return fragment;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {if (mCurTransaction == null) {mCurTransaction = mFragmentManager.beginTransaction();}if (DEBUG) Log.v(TAG, "Detaching item #" + getItemId(position) + ": f=" + object+ " v=" + ((Fragment) object).getView());if (position > fragments.size()) {if (DEBUG) Log.i(TAG, "remove fragment");mCurTransaction.remove((Fragment) object);} else {mCurTransaction.hide((Fragment) object);}}@Overridepublic void setPrimaryItem(ViewGroup container, int position, Object object) {Fragment fragment = (Fragment) object;if (fragment != mCurrentPrimaryItem) {if (mCurrentPrimaryItem != null) {mCurrentPrimaryItem.setMenuVisibility(false);mCurrentPrimaryItem.setUserVisibleHint(false);}if (fragment != null) {fragment.setMenuVisibility(true);fragment.setUserVisibleHint(true);}mCurrentPrimaryItem = fragment;}}@Overridepublic void finishUpdate(ViewGroup container) {if (mCurTransaction != null) {mCurTransaction.commitAllowingStateLoss();mCurTransaction = null;mFragmentManager.executePendingTransactions();}}@Overridepublic boolean isViewFromObject(View view, Object object) {return ((Fragment) object).getView() == view;}@Overridepublic Parcelable saveState() {return null;}@Overridepublic void restoreState(Parcelable state, ClassLoader loader) {}public long getItemId(int position) {return position;}private static String makeFragmentName(int viewId, long id) {return "android:switcher:" + viewId + ":" + id;}}
可以拿去直接用