package com.shizhefei.mvc; import android.view.View; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2; import com.shizhefei.mvc.ILoadViewFactory.ILoadMoreView; import com.shizhefei.mvc.ILoadViewFactory.ILoadView; public class MVCPullrefshHelper<DATA> extends MVCHelper<DATA> { public MVCPullrefshHelper(PullToRefreshBase<?> pullToRefreshAdapterViewBase) { super(new RefreshView(pullToRefreshAdapterViewBase)); } public MVCPullrefshHelper(PullToRefreshBase<?> pullToRefreshAdapterViewBase, ILoadView loadView, ILoadMoreView loadMoreView) { super(new RefreshView(pullToRefreshAdapterViewBase), loadView, loadMoreView); } private static class RefreshView implements IRefreshView { private PullToRefreshBase<? extends View> pullToRefreshAdapterViewBase; private OnRefreshListener211 onRefreshListener211 = new OnRefreshListener211(); private OnRefreshListenerNone onRefreshListenerNone = new OnRefreshListenerNone(); public RefreshView(PullToRefreshBase<? extends View> pullToRefreshAdapterViewBase) { this.pullToRefreshAdapterViewBase = pullToRefreshAdapterViewBase; pullToRefreshAdapterViewBase.setMode(Mode.PULL_FROM_START); pullToRefreshAdapterViewBase.setOnRefreshListener(onRefreshListener211); } @Override public View getContentView() { return pullToRefreshAdapterViewBase.getRefreshableView(); } @Override public void showRefreshComplete() { pullToRefreshAdapterViewBase.onRefreshComplete(); } @Override public void showRefreshing() { //避免触发刷新监听 pullToRefreshAdapterViewBase.setOnRefreshListener(onRefreshListenerNone); pullToRefreshAdapterViewBase.setRefreshing(); pullToRefreshAdapterViewBase.setOnRefreshListener(onRefreshListener211); } private static class OnRefreshListenerNone<T extends View> implements OnRefreshListener2<T> { @Override public void onPullDownToRefresh(PullToRefreshBase<T> refreshView) { } @Override public void onPullUpToRefresh(PullToRefreshBase<T> refreshView) { } } private class OnRefreshListener211<T extends View> implements OnRefreshListener2<T> { @Override public void onPullDownToRefresh(PullToRefreshBase<T> refreshView) { if (onRefreshListener != null) { onRefreshListener.onRefresh(); } } @Override public void onPullUpToRefresh(PullToRefreshBase<T> refreshView) { } } private OnRefreshListener onRefreshListener; @Override public void setOnRefreshListener(OnRefreshListener onRefreshListener) { this.onRefreshListener = onRefreshListener; } @Override public View getSwitchView() { return pullToRefreshAdapterViewBase.getRefreshableView(); } } }