package org.aisen.android.ui.fragment; import android.os.Bundle; import android.view.View; import android.widget.AbsListView; import android.widget.GridView; import android.widget.ListView; import org.aisen.android.R; 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; /** * Created by wangdan on 15-3-9. */ public abstract class ASwipyRefreshGridLayout<T extends Serializable, Ts extends Serializable> extends ARefreshFragment<T, Ts, ListView> implements SwipyRefreshLayout.OnRefreshListener { static String TAG = "ASwipeRefreshGridFragment"; @ViewInject(idStr = "swipeRefreshLayout") protected SwipyRefreshLayout swipeRefreshLayout; @ViewInject(idStr = "gridview") GridView mGridView; @Override final protected void setInitRefreshView(AbsListView refreshView, Bundle savedInstanceSate) { super.setInitRefreshView(refreshView, savedInstanceSate); swipeRefreshLayout.setOnRefreshListener(this); swipeRefreshLayout.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); swipeRefreshLayout.setVisibility(View.VISIBLE); configSwipeDirection(SwipyRefreshLayoutDirection.BOTH); setInitRefreshGridView(swipeRefreshLayout, refreshView, savedInstanceSate); } protected void setInitRefreshGridView(SwipyRefreshLayout swipeRefreshLayout, AbsListView refreshView, Bundle savedInstanceSate) { } @Override protected void onChangedByConfig(RefreshConfig config) { if (config.canLoadMore) configSwipeDirection(SwipyRefreshLayoutDirection.BOTH); else configSwipeDirection(SwipyRefreshLayoutDirection.TOP); } protected void configSwipeDirection(SwipyRefreshLayoutDirection direction) { swipeRefreshLayout.setDirection(direction); } @Override public AbsListView getRefreshView() { return mGridView; } @Override public void onRefresh(SwipyRefreshLayoutDirection direction) { if (direction == SwipyRefreshLayoutDirection.TOP) onPullDownToRefresh(); else if (direction == SwipyRefreshLayoutDirection.BOTTOM) onPullUpToRefresh(); } @Override protected int inflateContentView() { return R.layout.comm_lay_swipy_grid; } public GridView getGridView() { return (GridView) getRefreshView(); } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { super.onScrollStateChanged(view, scrollState); } @Override public boolean setRefreshing() { swipeRefreshLayout.setRefreshing(true); return false; } @Override public boolean isRefreshing() { // if (swipeRefreshLayout.isr) // return true; return super.isRefreshing(); } @Override public void onRefreshViewComplete() { if (swipeRefreshLayout.isRefreshing()) { swipeRefreshLayout.setRefreshing(false); } } @Override protected void taskStateChanged(ABaseTaskState state, Serializable extra) { super.taskStateChanged(state, extra); if (state == ABaseTaskState.finished) { if (swipeRefreshLayout != null && swipeRefreshLayout.isRefreshing()) onRefreshViewComplete(); } else if (state == ABaseTaskState.prepare) { if (loadingLayout != null && loadingLayout.getVisibility() != View.VISIBLE && swipeRefreshLayout != null) { setRefreshing(); } } } }