BaseFragmentPagerAdapter.java 1.94 KB
package com.cnlive.goldenline.ui.adapter;


import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;

import java.util.ArrayList;
import java.util.List;

public class BaseFragmentPagerAdapter<T> extends FragmentPagerAdapter {

    private ArrayList<T> list = new ArrayList<T>();
    private FragmentManager mFragmentManager;

    public BaseFragmentPagerAdapter(FragmentManager fm, List<T> list) {
        super(fm);
        this.mFragmentManager = fm;
        for (T item : list)
            this.list.add(item);
    }

    // clear FragmentPageAdapter item state before setting Adapter
    public void clearFragmentState(ViewPager container){
        if(list == null || container == null) return ;
        int viewId = container.getId();
        FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
        for (int id = 0; id < list.size(); id++) {
            String name = "android:switcher:" + viewId + ":" + id;
            Fragment fragment = mFragmentManager.findFragmentByTag(name);
            if(fragment != null){
                fragmentTransaction.remove(fragment);
            }
        }
        fragmentTransaction.commitAllowingStateLoss();
    }


    @Override
    public Fragment getItem(int position) {
        return getFragment(position, list.get(position));
    }

    public Fragment getFragment(int position, T item) {
        return null;
    }

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

    public CharSequence getTitle(int position, T item) {
        return super.getPageTitle(position);
    }

    @Override
    public int getCount() {
        if (list != null && list.size() > 0) {
            return list.size();
        } else {
            return 0;
        }
    }
}