f9c154251604d3b39b4feb8f93fc02efe523fd90.svn-base 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package com.hjq.base;
  2. import android.support.annotation.NonNull;
  3. import android.support.v4.app.Fragment;
  4. import android.support.v4.app.FragmentActivity;
  5. import android.support.v4.app.FragmentManager;
  6. import android.support.v4.app.FragmentPagerAdapter;
  7. import android.view.ViewGroup;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10. /**
  11. * desc : FragmentPagerAdapter 基类
  12. */
  13. public class BaseFragmentAdapter<F extends Fragment> extends FragmentPagerAdapter {
  14. private List<F> mFragmentSet = new ArrayList<>(); // Fragment集合
  15. private F mCurrentFragment; // 当前显示的Fragment
  16. public BaseFragmentAdapter(FragmentActivity activity) {
  17. this(activity.getSupportFragmentManager());
  18. }
  19. public BaseFragmentAdapter(Fragment fragment) {
  20. this(fragment.getChildFragmentManager());
  21. }
  22. public BaseFragmentAdapter(FragmentManager manager) {
  23. super(manager);
  24. }
  25. @Override
  26. public F getItem(int position) {
  27. return mFragmentSet.get(position);
  28. }
  29. @Override
  30. public int getCount() {
  31. return mFragmentSet.size();
  32. }
  33. @Override
  34. public void setPrimaryItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
  35. if (getCurrentFragment() != object) {
  36. // 记录当前的Fragment对象
  37. mCurrentFragment = (F) object;
  38. }
  39. super.setPrimaryItem(container, position, object);
  40. }
  41. public void addFragment(F fragment) {
  42. mFragmentSet.add(fragment);
  43. }
  44. /**
  45. * 获取Fragment集合
  46. */
  47. public List<F> getAllFragment() {
  48. return mFragmentSet;
  49. }
  50. /**
  51. * 获取当前的Fragment
  52. */
  53. public F getCurrentFragment() {
  54. return mCurrentFragment;
  55. }
  56. }