package com.jobmineplus.mobile.activities.jbmnpls;
import java.util.ArrayList;
import java.util.HashMap;
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.View;
import android.widget.TextView;
import com.jobmineplus.mobile.R;
import com.viewpagerindicator.PageIndicator;
import com.viewpagerindicator.TitlePageIndicator;
public abstract class JbmnplsPageActivityBase extends JbmnplsActivityBase implements ViewPager.OnPageChangeListener {
private TabAdapter mAdapter;
private ViewPager mPager;
private PageIndicator mIndicator;
private int currentIndex = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set the content view if not set yet
if (findViewById(R.id.pager) == null) {
setContentView(R.layout.tabs);
}
mAdapter = new TabAdapter(getSupportFragmentManager());
mPager = (ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
mIndicator = (TitlePageIndicator)findViewById(R.id.indicator);
mIndicator.setViewPager(mPager);
mIndicator.setOnPageChangeListener(this);
}
public void createTab(String title, Fragment fragment) {
mAdapter.createTab(title, fragment);
}
public int getCurrentIndex() {
return currentIndex;
}
public String getCurrentTabName() {
return (String) mAdapter.getPageTitle(currentIndex);
}
public Fragment getCurrentFragment() {
return getFragment(currentIndex);
}
public int numOfTabs() {
return mAdapter.getCount();
}
public Fragment getFragment(int index) {
return mAdapter.getItem(index);
}
public Fragment getFragment(String title) {
return mAdapter.getItem(title);
}
//=====================
// Empty Text
//=====================
public void setEmptyText(CharSequence text) {
((TextView)findViewById(R.id.emptyText)).setText(text);
}
public void setIsEmpty(boolean isEmpty) {
View text = findViewById(R.id.emptyText);
View layout = findViewById(R.id.layout);
if (isEmpty) {
text.setVisibility(View.VISIBLE);
layout.setVisibility(View.GONE);
} else {
text.setVisibility(View.GONE);
layout.setVisibility(View.VISIBLE);
}
}
//=====================
// View Pager Changer
//=====================
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int index) {
currentIndex = index;
}
//=================
// Custom Adapter
//=================
protected final class TabAdapter extends FragmentPagerAdapter {
public TabAdapter(FragmentManager fm) {
super(fm);
}
private final HashMap<String, Fragment> tabFragments = new HashMap<String, Fragment>();
private final ArrayList<String> tabTitles = new ArrayList<String>();
public void createTab(String title, Fragment fragment) {
if (!tabTitles.contains(title)) {
tabTitles.add(title);
notifyDataSetChanged();
}
Fragment prev = tabFragments.get(title);
if (prev == null || !prev.equals(fragment)) {
tabFragments.put(title, fragment);
}
}
@Override
public int getCount() {
return tabTitles.size();
}
@Override
public int getItemPosition(Object object) {
return FragmentPagerAdapter.POSITION_NONE;
}
public Fragment getItem(String title) {
return tabFragments.get(title);
}
@Override
public Fragment getItem(int position) {
String key = (String) getPageTitle(position);
return getItem(key);
}
@Override
public CharSequence getPageTitle(int position) {
return tabTitles.get(position);
}
}
}