package com.m.ui.fragment;
import java.io.Serializable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AbsListView;
import android.widget.ListView;
import android.widget.TextView;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.m.R;
import com.m.support.Inject.ViewInject;
public abstract class ARefreshListFragment<T extends Serializable, Ts extends Serializable>
extends ARefreshFragment<T, Ts, ListView> implements OnRefreshListener2<ListView> {
@ViewInject(idStr = "refreshListView")
private PullToRefreshListView refreshListView;
private View mFooterView;
@Override
void _layoutInit(LayoutInflater inflater, Bundle savedInstanceState) {
super._layoutInit(inflater, savedInstanceState);
refreshListView.getRefreshableView().setRecyclerListener(this);
refreshListView.setAdapter(getAdapter());
refreshListView.setOnRefreshListener(this);
refreshListView.setMode(Mode.BOTH);
}
@Override
public AbsListView getRefreshView() {
return refreshListView.getRefreshableView();
}
@Override
protected int inflateContentView() {
return R.layout.layout_refresh_listview;
}
protected PullToRefreshListView getRefreshListView() {
return refreshListView;
}
@Override
protected void taskStateChanged(ABaseTaskState state, Serializable extra) {
super.taskStateChanged(state, extra);
if (state == ABaseTaskState.canceled || state == ABaseTaskState.finished) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
getRefreshListView().onRefreshComplete();
}
}, 250);
}
}
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
onPullDownToRefresh();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
onPullUpToRefresh();
};
@Override
public boolean setRefreshing() {
refreshListView.setRefreshing(true);
// 这个控件默认会回调下拉事件,父类不再requestData()
return true;
}
@Override
public boolean isRefreshing() {
return refreshListView.isRefreshing();
}
@Override
public void setRefreshViewComplete() {
if (refreshListView.isRefreshing())
refreshListView.onRefreshComplete();
}
@Override
public void resetRefreshView(RefreshConfig config) {
if (mFooterView == null) {
mFooterView = View.inflate(getActivity(), R.layout.layout_footerview, null);
TextView btnLoadMore = (TextView) mFooterView.findViewById(R.id.btnLoadMore);
btnLoadMore.setText(R.string.cannotRequestUpdate);
View layLoading = mFooterView.findViewById(R.id.layLoading);
layLoading.setVisibility(View.GONE);
}
setRefreshViewComplete();
ListView listView = refreshListView.getRefreshableView();
if (config.canLoadMore) {
if (listView.getFooterViewsCount() > 0) {
listView.removeFooterView(mFooterView);
}
refreshListView.setMode(Mode.BOTH);
}
else {
listView.addFooterView(mFooterView);
refreshListView.setMode(Mode.PULL_FROM_START);
}
}
}