package org.aisen.android.ui.fragment; import android.os.Bundle; import android.view.View; import org.aisen.android.R; import org.aisen.android.network.task.TaskException; import org.aisen.android.support.inject.ViewInject; import org.aisen.android.ui.widget.swipyrefresh.SwipyRefreshLayout; import org.aisen.android.ui.widget.swipyrefresh.SwipyRefreshLayoutDirection; import java.io.Serializable; /** * 维护SwipyRefresh刷新的GridView * * Created by wangdan on 16/1/21. */ public abstract class AGridSwipyRefreshFragment<T extends Serializable, Ts extends Serializable, Header extends Serializable> extends AGridFragment<T, Ts, Header> implements SwipyRefreshLayout.OnRefreshListener { @ViewInject(idStr = "swipyRefreshLayout") protected SwipyRefreshLayout swipyRefreshLayout; @Override public int inflateContentView() { return R.layout.comm_ui_swipy_grid; } @Override final protected void setupRefreshView(Bundle savedInstanceSate) { super.setupRefreshView(savedInstanceSate); setupSwipyRefreshLayout(swipyRefreshLayout); } protected void setupSwipyRefreshLayout(SwipyRefreshLayout swipyRefreshLayout) { swipyRefreshLayout.setOnRefreshListener(this); swipyRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright, android.R.color.holo_green_light, android.R.color.holo_orange_light, android.R.color.holo_red_light); swipyRefreshLayout.setVisibility(View.VISIBLE); setSwipyDirection(SwipyRefreshLayoutDirection.BOTH); } @Override protected void setupRefreshViewWithConfig(RefreshConfig config) { if (!config.pagingEnd) setSwipyDirection(SwipyRefreshLayoutDirection.BOTH); else setSwipyDirection(SwipyRefreshLayoutDirection.TOP); } protected void setSwipyDirection(SwipyRefreshLayoutDirection direction) { swipyRefreshLayout.setDirection(direction); } @Override public void onRefresh(SwipyRefreshLayoutDirection direction) { if (direction == SwipyRefreshLayoutDirection.TOP) onPullDownToRefresh(); else if (direction == SwipyRefreshLayoutDirection.BOTTOM) onPullUpToRefresh(); } @Override public boolean setRefreshViewToLoading() { swipyRefreshLayout.setRefreshing(true); return false; } @Override public void onRefreshViewFinished(RefreshMode mode) { swipyRefreshLayout.setRefreshing(false); } @Override protected void onTaskStateChanged(ABaseTaskState state, TaskException exception, RefreshMode mode) { super.onTaskStateChanged(state, exception, mode); if (state == ABaseTaskState.finished) { if (swipyRefreshLayout != null && swipyRefreshLayout.isRefreshing()) onRefreshViewFinished(mode); } else if (state == ABaseTaskState.prepare) { if (loadingLayout != null && loadingLayout.getVisibility() != View.VISIBLE && swipyRefreshLayout != null) { setRefreshViewToLoading(); } } } }