欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > Android开发BasePagerAdapter

Android开发BasePagerAdapter

2025/6/1 23:03:06 来源:https://blog.csdn.net/u010074743/article/details/146520811  浏览:    关键词:Android开发BasePagerAdapter
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;}}

可以拿去直接用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词