package com.netease.nim.demo.main.adapter; import java.util.List; import com.netease.nim.demo.common.ui.viewpager.SlidingTabPagerAdapter; import com.netease.nim.demo.main.fragment.MainTabFragment; import com.netease.nim.demo.main.model.MainTab; import android.content.Context; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.view.ViewPager; public class MainTabPagerAdapter extends SlidingTabPagerAdapter { @Override public int getCacheCount() { return MainTab.values().length; } public MainTabPagerAdapter(FragmentManager fm, Context context, ViewPager pager) { super(fm, MainTab.values().length, context.getApplicationContext(), pager); for (MainTab tab : MainTab.values()) { try { MainTabFragment fragment = null; List<Fragment> fs = fm.getFragments(); if (fs != null) { for (Fragment f : fs) { if (f.getClass() == tab.clazz) { fragment = (MainTabFragment) f; break; } } } if (fragment == null) { fragment = tab.clazz.newInstance(); } fragment.setState(this); fragment.attachTabData(tab); fragments[tab.tabIndex] = fragment; } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } @Override public int getCount() { return MainTab.values().length; } @Override public CharSequence getPageTitle(int position) { MainTab tab = MainTab.fromTabIndex(position); int resId = tab != null ? tab.resId : 0; return resId != 0 ? context.getText(resId) : ""; } }