package studio.uphie.one.ui; import android.support.v4.app.FragmentManager; import java.util.ArrayList; import java.util.List; import studio.uphie.one.abs.AbsBaseFragment; /** * Created by Uphie on 2015/9/6. * Email: uphie7@gmail.com */ public class FragmentAdapter<T extends AbsBaseFragment> extends android.support.v4.app.FragmentPagerAdapter { private List<T> fragmentList; private boolean canLoadMore = true; public FragmentAdapter(FragmentManager fm, List<T> fragmentList) { super(fm); this.fragmentList = fragmentList == null ? new ArrayList<T>() : fragmentList; } @Override public T getItem(int position) { if (fragmentList.size() > 0 && fragmentList.size() > position) { return fragmentList.get(position); } return null; } @Override public int getCount() { return fragmentList.size(); } public boolean canLoadMore() { return canLoadMore; } /** * 增加一个Fragment * * @param fragment */ public void add(T fragment) { fragmentList.add(fragment); notifyDataSetChanged(); } /** * 从Adapter中移除Fragment * * @param fragment 要移除的Fragment */ public void removeFromAdapter(T fragment) { fragmentList.remove(fragment); fragment.onDestroy(); notifyDataSetChanged(); canLoadMore = false; } /** * 删除所有的Fragment */ public void removeAll() { for (AbsBaseFragment f : fragmentList) { f.onDestroyView(); f.onDestroy(); } fragmentList.clear(); notifyDataSetChanged(); } /** * 更新Fragment * * @param newFragments 新的Fragment */ public void replaceAll(List<T> newFragments) { removeAll(); fragmentList.addAll(newFragments); notifyDataSetChanged(); canLoadMore=true; } }