BaseViewPagerFragment(只需要把获取碎片集合和获取标题集合的方法abstract,交给子类去实现即可)
public abstract class BaseViewPagerFragment extends BaseFragment { @BindView(R.id.course_tl) protected TabLayout mCourseTl; @BindView(R.id.course_vp) protected ViewPager mCourseVp; private List<Fragment> fragmentList; private List<String> mTitleList; protected abstract List<Fragment> getFragmentList(); protected abstract List<String> getmTitleList(); @Override protected void initData() { super.initData(); } @Override protected void initWidget(View root) { super.initWidget(root); myUtils.initViewPager(new MyAdapter(getFragmentManager(), getFragmentList(), getmTitleList()), mCourseVp); mCourseTl.setupWithViewPager(mCourseVp); } @Override protected int getLayoutId() { return R.layout.fragment_course; } class MyAdapter extends FragmentPagerAdapter { private List<Fragment> list; private List<String> mTitieList; public MyAdapter(FragmentManager fm, List<Fragment> list, List<String> mTitieList) { super(fm); this.list = list; this.mTitieList = mTitieList; } @Override public CharSequence getPageTitle(int position) { return mTitieList.get(position); } @Override public Fragment getItem(int position) { return list.get(position); } @Override public int getCount() { return list.size(); } } }子类
public class CourseFragment extends BaseViewPagerFragment { @Override protected List<Fragment> getFragmentList() { return myUtils.initList((Fragment) new VideoFragment(),new StrategyFragment()); } @Override protected List<String> getmTitleList() { return myUtils.initList("视频","攻略"); } }
以上是错误示范,因为viewpager就是一个,所以碎片页面会被错乱放置
base
public abstract class BaseViewPagerFragment extends BaseFragment { protected abstract List<Fragment> getFragmentList(); protected abstract List<String> getmTitleList(); protected abstract ViewPager getViewPager(); protected abstract TabLayout getTabLayout(); @Override protected void initWidget(View root) { super.initWidget(root); ViewPager viewPager = getViewPager(); TabLayout tabLayout = getTabLayout(); viewPager.setAdapter(new TabPagerAdapter(getFragmentManager(), getFragmentList(), getmTitleList())); tabLayout.setupWithViewPager(viewPager); } @Override protected abstract int getLayoutId(); }子类
@Override protected List<Fragment> getFragmentList() { return myUtils.initList((Fragment) new NewFragment(), new HotFragment(), new MineFragment()); } @Override protected List<String> getmTitleList() { return myUtils.initList("最新动弹","热门动弹","我的动弹"); } @Override protected ViewPager getViewPager() { return mTweetVp; } @Override protected TabLayout getTabLayout() { return mTweetTl; }