package net.oschina.gitapp.adapter; import java.util.ArrayList; import net.oschina.gitapp.R; import net.oschina.gitapp.widget.PagerSlidingTabStrip; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.widget.TabHost; import android.widget.TextView; public class ViewPageFragmentAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener { private final Context mContext; protected PagerSlidingTabStrip mPagerStrip; private final ViewPager mViewPager; private final ArrayList<ViewPageInfo> mTabs = new ArrayList<ViewPageInfo>(); static class DummyTabFactory implements TabHost.TabContentFactory { private final Context mContext; public DummyTabFactory(Context context) { mContext = context; } @Override public View createTabContent(String tag) { View v = new View(mContext); v.setMinimumWidth(0); v.setMinimumHeight(0); return v; } } public ViewPageFragmentAdapter(FragmentManager fm, PagerSlidingTabStrip pageStrip, ViewPager pager) { super(fm); mContext = pager.getContext(); mPagerStrip = pageStrip; mViewPager = pager; mViewPager.setAdapter(this); mViewPager.setOnPageChangeListener(this); mPagerStrip.setViewPager(mViewPager); } public void addTab(String title, String tag, Class<?> clss, Bundle args) { ViewPageInfo info = new ViewPageInfo(title, tag, clss, args); mTabs.add(info); } @Override public void notifyDataSetChanged() { super.notifyDataSetChanged(); for (ViewPageInfo viewPageInfo : mTabs) { TextView v = (TextView) LayoutInflater.from(mContext).inflate( R.layout.sliding_tab_item, null); v.setText(viewPageInfo.title); mPagerStrip.addTab(v); } } @Override public int getCount() { return mTabs.size(); } @Override public Fragment getItem(int position) { ViewPageInfo info = mTabs.get(position); return Fragment.instantiate(mContext, info.clss.getName(), info.args); } @Override public CharSequence getPageTitle(int position) { return mTabs.get(position).title; } @Override public void onPageScrollStateChanged(int state) { } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { } }