123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- package com.luticate.utils.ui.fragments;
-
- import android.animation.Animator;
- import android.animation.AnimatorListenerAdapter;
- import android.app.Fragment;
- import android.os.Build;
- import android.os.Bundle;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.ViewGroup;
-
- import com.luticate.utils.business.LuConsumer;
- import com.luticate.utils.business.LuPromise;
- import com.luticate.utils.dbo.LuDbo;
- import com.luticate.utils.dbo.LuPaginatedDbo;
- import com.luticate.utils.dbo.LuPromiseError;
- import com.luticate.utils.ui.views.AbstractPaginationView;
-
- import java.util.Vector;
-
- /**
- * Created by robin on 12/6/15.
- */
- public abstract class AbstractPaginationFragment<Dbo extends LuDbo> extends Fragment {
-
- protected int _page = 0;
-
- protected int _perPage = 15;
-
- protected int _maxPage = 1;
-
- protected String _query = "";
-
- protected LuPaginatedDbo<Dbo> _items = null;
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
- {
- return inflater.inflate(getLayoutId(), container, false);
- }
-
- @Override
- public void onStart() {
- super.onStart();
- View v = getView();
- AbstractPaginationView paginationView = (AbstractPaginationView) v.findViewById(getPaginationViewId());
- paginationView.setOnPageChanged(new LuConsumer<Integer>() {
- @Override
- public void execute(Integer page) {
- loadPage(page);
- }
- });
- if (_items == null) {
- loadPage(_page);
- }
- }
-
- protected void showProgress(final boolean show)
- {
- View v = getView();
- if (!isAdded() || v == null)
- return;
-
- final View imagesScrollView = v.findViewById(getScrollViewId());
- final View loadingView = v.findViewById(getLoaderViewId());
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
- {
- int shortAnimTime =
- getResources().getInteger(android.R.integer.config_shortAnimTime);
-
- loadingView.setVisibility(View.VISIBLE);
- loadingView.animate().setDuration(shortAnimTime).alpha(show ? 1 : 0)
- .setListener(new AnimatorListenerAdapter()
- {
- @Override
- public void onAnimationEnd(Animator animation)
- {
- loadingView.setVisibility(show ? View.VISIBLE : View.GONE);
- }
- });
-
- imagesScrollView.setVisibility(View.VISIBLE);
- imagesScrollView.animate().setDuration(shortAnimTime).alpha(show ? 0 : 1)
- .setListener(new AnimatorListenerAdapter()
- {
- @Override
- public void onAnimationEnd(Animator animation)
- {
- imagesScrollView.setVisibility(show ? View.GONE : View.VISIBLE);
- }
- });
- }
- else
- {
- loadingView.setVisibility(show ? View.VISIBLE : View.GONE);
- imagesScrollView.setVisibility(show ? View.GONE : View.VISIBLE);
- }
- }
-
- public void loadPage(final int page)
- {
- final View v = getView();
- if (!isAdded() || v == null) {
- return;
- }
- showProgress(true);
- if (_items != null) {
- _items.setData(new Vector<Dbo>());
- }
- getLoadPagePromise(page, _perPage, _query).then(new LuConsumer<LuPaginatedDbo<Dbo>>() {
- @Override
- public void execute(LuPaginatedDbo<Dbo> items) {
- _items = items;
- _page = page;
- _maxPage = Math.max(items.getCount() / _perPage, 1);
- AbstractPaginationView paginationView = (AbstractPaginationView) v.findViewById(getPaginationViewId());
- paginationView.setMaxPage(_maxPage);
- paginationView.setPage(_page);
- onPageChanged();
- showProgress(false);
- }
- }, new LuConsumer<LuPromiseError>() {
- @Override
- public void execute(LuPromiseError error) {
-
- showProgress(false);
- }
- });
- }
-
- protected abstract void onPageChanged();
-
- protected abstract LuPromise<LuPaginatedDbo<Dbo>> getLoadPagePromise(int page, int perPage, String query);
-
- protected abstract int getScrollViewId();
-
- protected abstract int getLoaderViewId();
-
- protected abstract int getLayoutId();
-
- protected abstract int getPaginationViewId();
- }
|