package com.redefine.aaron.holographlibrary_demo;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import com.actionbarsherlock.app.ActionBar;
import java.util.ArrayList;
/**
* Created by aaron on 14-11-22.
*/
public class TabsAdapter extends FragmentStatePagerAdapter implements com.actionbarsherlock.app.ActionBar.TabListener, ViewPager.OnPageChangeListener {
private final MainActivity mContext;
private final ActionBar mActionBar;
private final ViewPager mViewPager;
private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();
private final ArrayList<Fragment> mFrags = new ArrayList<Fragment>();
public TabsAdapter(MainActivity context, ViewPager viewPager) {
super(context.getSupportFragmentManager());
mContext = context;
mViewPager = viewPager;
mActionBar=context.getSupportActionBar();
mViewPager.setAdapter(this);
mViewPager.setOnPageChangeListener(this);
}
public void addTab(ActionBar.Tab tab,Class<?> clss,Bundle args,Fragment frag){
TabInfo info = new TabInfo(clss,args);
tab.setTag(info);
tab.setTabListener(this);
mTabs.add(info);
mFrags.add(frag);
mActionBar.addTab(tab);
notifyDataSetChanged();
}
@Override
public Fragment getItem(int i) {
return mFrags.get(i);
}
@Override
public void onPageScrolled(int i, float v, int i2) {
}
@Override
public void onPageSelected(int i) {
mActionBar.setSelectedNavigationItem(i);
}
@Override
public void onPageScrollStateChanged(int i) {
}
@Override
public int getCount() {
return mTabs.size();
}
@Override
public void onTabSelected(com.actionbarsherlock.app.ActionBar.Tab tab, android.support.v4.app.FragmentTransaction fragmentTransaction) {
Object tag = tab.getTag();
for(int i = 0 ; i<mTabs.size();i++){
if(mTabs.get(i)==tag){
mViewPager.setCurrentItem(i);
}
}
}
@Override
public void onTabUnselected(com.actionbarsherlock.app.ActionBar.Tab tab, android.support.v4.app.FragmentTransaction fragmentTransaction) {
}
@Override
public void onTabReselected(com.actionbarsherlock.app.ActionBar.Tab tab, android.support.v4.app.FragmentTransaction fragmentTransaction) {
}
static final class TabInfo {
private final Class<?> clss;
private final Bundle args;
TabInfo(Class<?> clss, Bundle args) {
this.clss = clss;
this.args = args;
}
}
}