org.spinsuite.adapters.FragmentTabsAdapter.java Source code

Java tutorial

Introduction

Here is the source code for org.spinsuite.adapters.FragmentTabsAdapter.java

Source

/*************************************************************************************
 * Product: SFAndroid (Sales Force Mobile)                                           *
 * This program is free software; you can redistribute it and/or modify it           *
 * under the terms version 2 of the GNU General Public License as published          *
 * by the Free Software Foundation. This program is distributed in the hope          *
 * that it will be useful, but WITHOUT ANY WARRANTY; without even the implied        *
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                  *
 * See the GNU General Public License for more details.                              *
 * You should have received a copy of the GNU General Public License along           *
 * with this program; if not, write to the Free Software Foundation, Inc.,           *
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.                            *
 * For the text or an alternative of this public license, you may reach us           *
 * Copyright (C) 2012-2013 E.R.P. Consultores y Asociados, S.A. All Rights Reserved. *
 * Contributor(s): Yamel Senih www.erpconsultoresyasociados.com                      *
 *************************************************************************************/
package org.spinsuite.adapters;

import java.util.ArrayList;

import org.spinsuite.util.Cust_TabFactory;
import org.spinsuite.util.TabInfo;
import org.spinsuite.view.custom.Cust_ViewPager;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

/**
 * @author Yamel Senih
 *
 */
public class FragmentTabsAdapter extends FragmentPagerAdapter {
    private Context mContext;
    private TabHost mTabHost;
    private FragmentManager fm;
    private ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();

    /**
     * 
     * *** Constructor ***
     * @author Yamel Senih 06/02/2013, 12:49:26
     * @param fm
     * @param ctx
     */
    public FragmentTabsAdapter(FragmentActivity activity, TabHost mTabHost, Cust_ViewPager pager) {
        super(activity.getSupportFragmentManager());
        this.fm = activity.getSupportFragmentManager();
        mContext = activity;
        this.mTabHost = mTabHost;
        pager.setAdapter(this);
    }

    /**
     * Add Tab Fragment in ArrayList
     * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 13/06/2013, 14:55:15
     * @param clazz
     * @param tag
     * @param title
     * @param bundle
     * @return void
     */
    public void addTab(Class<?> clazz, String tag, String title, Bundle bundle) {
        TabSpec tabSpec = mTabHost.newTabSpec(tag).setIndicator(title);
        tabSpec.setContent(new Cust_TabFactory(mContext));

        TabInfo info = new TabInfo(clazz, title, bundle);
        mTabs.add(info);
        mTabHost.addTab(tabSpec);
        notifyDataSetChanged();
    }

    /**
     * Add Tab Fragment in ArrayList
     * @author <a href="mailto:yamelsenih@gmail.com">Yamel Senih</a> 13/06/2013, 15:03:16
     * @param clazz
     * @param tag
     * @param titleID
     * @param bundle
     * @return void
     */
    public void addTab(Class<?> clazz, String tag, int titleID, Bundle bundle) {
        addTab(clazz, tag, mContext.getResources().getString(titleID), bundle);
    }

    @Override
    public int getCount() {
        return mTabs.size();
    }

    @Override
    public Fragment getItem(int position) {
        return Fragment.instantiate(mContext, mTabs.get(position).getClazz().getName(),
                mTabs.get(position).getArgs());
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mTabs.get(position).getTitle();
    }

    /*@Override
    public int getIconResId(int index) {
       return mTabs.get(index).getIcon_ID();
    }*/

    /**
      * get Active Fragment
      * @author Yamel Senih 01/02/2013, 10:19:54
      * @param position
      * @return
      * @return Fragment
      */
    public Fragment getActiveFragment(int position, ViewPager mViewPager) {
        String name = makeFragmentName(mViewPager, position);
        return fm.findFragmentByTag(name);
    }

    /**
     * Get Current Fragment
     * @author Yamel Senih 04/02/2013, 17:14:33
     * @return
     * @return Fragment
     */
    public Fragment getCurrentFragment(ViewPager mViewPager) {
        String name = makeFragmentName(mViewPager, mViewPager.getCurrentItem());
        return fm.findFragmentByTag(name);
    }

    /**
     * Make Fragment Name
     * @author Yamel Senih 01/02/2013, 10:20:05
     * @param mViewPager
     * @param index
     * @return
     * @return String
     */
    public String makeFragmentName(ViewPager mViewPager, int index) {
        return "android:switcher:" + mViewPager.getId() + ":" + index;
    }
}