You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AbstractPaginationFragment.java 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package com.luticate.utils.ui.fragments;
  2. import android.animation.Animator;
  3. import android.animation.AnimatorListenerAdapter;
  4. import android.app.Fragment;
  5. import android.os.Build;
  6. import android.os.Bundle;
  7. import android.view.LayoutInflater;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import com.luticate.utils.business.LuPromise;
  11. import com.luticate.utils.dbo.LuDbo;
  12. import com.luticate.utils.dbo.LuPaginatedDbo;
  13. import com.luticate.utils.ui.views.AbstractPaginationView;
  14. import java.util.Vector;
  15. /**
  16. * Created by robin on 12/6/15.
  17. */
  18. public abstract class AbstractPaginationFragment<Dbo extends LuDbo> extends Fragment {
  19. protected int _page = 0;
  20. protected int _perPage = 15;
  21. protected int _maxPage = 1;
  22. protected String _query = "";
  23. protected LuPaginatedDbo<Dbo> _items = null;
  24. @Override
  25. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
  26. {
  27. return inflater.inflate(getLayoutId(), container, false);
  28. }
  29. @Override
  30. public void onStart() {
  31. super.onStart();
  32. View v = getView();
  33. AbstractPaginationView paginationView = (AbstractPaginationView) v.findViewById(getPaginationViewId());
  34. paginationView.setOnPageChanged(new LuPromise.LuConsumer<Integer>() {
  35. @Override
  36. public void execute(Integer page) {
  37. loadPage(page);
  38. }
  39. });
  40. if (_items == null) {
  41. loadPage(_page);
  42. }
  43. }
  44. protected void showProgress(final boolean show)
  45. {
  46. View v = getView();
  47. if (!isAdded() || v == null)
  48. return;
  49. final View imagesScrollView = v.findViewById(getScrollViewId());
  50. final View loadingView = v.findViewById(getLoaderViewId());
  51. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
  52. {
  53. int shortAnimTime =
  54. getResources().getInteger(android.R.integer.config_shortAnimTime);
  55. loadingView.setVisibility(View.VISIBLE);
  56. loadingView.animate().setDuration(shortAnimTime).alpha(show ? 1 : 0)
  57. .setListener(new AnimatorListenerAdapter()
  58. {
  59. @Override
  60. public void onAnimationEnd(Animator animation)
  61. {
  62. loadingView.setVisibility(show ? View.VISIBLE : View.GONE);
  63. }
  64. });
  65. imagesScrollView.setVisibility(View.VISIBLE);
  66. imagesScrollView.animate().setDuration(shortAnimTime).alpha(show ? 0 : 1)
  67. .setListener(new AnimatorListenerAdapter()
  68. {
  69. @Override
  70. public void onAnimationEnd(Animator animation)
  71. {
  72. imagesScrollView.setVisibility(show ? View.GONE : View.VISIBLE);
  73. }
  74. });
  75. }
  76. else
  77. {
  78. loadingView.setVisibility(show ? View.VISIBLE : View.GONE);
  79. imagesScrollView.setVisibility(show ? View.GONE : View.VISIBLE);
  80. }
  81. }
  82. public void loadPage(final int page)
  83. {
  84. final View v = getView();
  85. if (!isAdded() || v == null) {
  86. return;
  87. }
  88. showProgress(true);
  89. if (_items != null) {
  90. _items.setData(new Vector<Dbo>());
  91. }
  92. getLoadPagePromise(page, _perPage, _query).then(new LuPromise.LuConsumer<LuPaginatedDbo<Dbo>>() {
  93. @Override
  94. public void execute(LuPaginatedDbo<Dbo> items) {
  95. _items = items;
  96. _page = page;
  97. _maxPage = Math.max(items.getCount() / _perPage, 1);
  98. AbstractPaginationView paginationView = (AbstractPaginationView) v.findViewById(getPaginationViewId());
  99. paginationView.setMaxPage(_maxPage);
  100. paginationView.setPage(_page);
  101. onPageChanged();
  102. showProgress(false);
  103. }
  104. }, new LuPromise.LuConsumer<LuPromise.LuPromiseError>() {
  105. @Override
  106. public void execute(LuPromise.LuPromiseError error) {
  107. showProgress(false);
  108. }
  109. });
  110. }
  111. protected abstract void onPageChanged();
  112. protected abstract LuPromise<LuPaginatedDbo<Dbo>> getLoadPagePromise(int page, int perPage, String query);
  113. protected abstract int getScrollViewId();
  114. protected abstract int getLoaderViewId();
  115. protected abstract int getLayoutId();
  116. protected abstract int getPaginationViewId();
  117. }