package com.cheikh.lazywaimai.base;
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 java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import com.cheikh.lazywaimai.R;
import com.cheikh.lazywaimai.util.ContentView;
import com.cheikh.lazywaimai.widget.SlidingTabLayout;
/**
* author: cheikh.wang on 17/1/5
* email: wanghonghi@126.com
*/
@ContentView(R.layout.fragment_viewpager)
public abstract class BaseTabActivity<UC> extends BaseActivity<UC> {
private static final String SAVE_SELECTED_TAB = "selected_tab";
@Bind(R.id.viewpager_tabs)
SlidingTabLayout mSlidingTabStrip;
@Bind(R.id.viewpager)
ViewPager mViewPager;
private TabPagerAdapter mAdapter;
private int mCurrentItem;
@Override
protected void initializeViews(Bundle savedInstanceState) {
mAdapter = new TabPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mAdapter);
mViewPager.setPageMargin(getResources().getDimensionPixelSize(R.dimen.spacing_minor));
mViewPager.setOffscreenPageLimit(3);
mSlidingTabStrip.setViewPager(mViewPager);
mSlidingTabStrip.setTabListener(new SlidingTabLayout.TabListener() {
@Override
public void onTabSelected(int pos) {}
@Override
public void onTabReSelected(int pos) {}
});
if (savedInstanceState != null) {
mCurrentItem = savedInstanceState.getInt(SAVE_SELECTED_TAB);
}
}
@Override
public void onResume() {
super.onResume();
mSlidingTabStrip.getBackground().setAlpha(255);
}
@Override
public void onPause() {
mCurrentItem = mViewPager.getCurrentItem();
super.onPause();
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putInt(SAVE_SELECTED_TAB, mCurrentItem);
super.onSaveInstanceState(outState);
}
protected ViewPager getViewPager() {
return mViewPager;
}
protected void setFragments(List<Fragment> fragments) {
mAdapter.setFragments(fragments);
mSlidingTabStrip.notifyDataSetChanged();
mViewPager.setCurrentItem(mCurrentItem);
}
protected SlidingTabLayout getSlidingTabStrip() {
return mSlidingTabStrip;
}
protected TabPagerAdapter getAdapter() {
return mAdapter;
}
protected abstract String getTabTitle(int position);
protected class TabPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragments;
private TabPagerAdapter(FragmentManager fm) {
super(fm);
mFragments = new ArrayList<>();
}
void setFragments(List<Fragment> fragments) {
mFragments.clear();
mFragments.addAll(fragments);
notifyDataSetChanged();
}
@Override
public final Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public final int getCount() {
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return getTabTitle(position);
}
}
}