package com.ywwxhz.processers; import android.support.v4.widget.SwipeRefreshLayout; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.listener.PauseOnScrollListener; import com.ywwxhz.adapters.BaseAdapter; import com.ywwxhz.cnbetareader.R; import com.ywwxhz.data.ListDataProvider; import com.ywwxhz.lib.kits.PrefKit; import com.ywwxhz.lib.kits.Toolkit; import com.ywwxhz.widget.PagedLoader; import java.util.List; /** * cnBetaReader * Created by 远望の无限(ywwxhz) on 2014/11/1 17:46. */ public class BaseListProcesser<DataType,DataProvider extends ListDataProvider<DataType,? extends BaseAdapter<DataType>>> extends BaseProcesserImpl<List<DataType>,DataProvider> implements SwipeRefreshLayout.OnRefreshListener { private ListView listView; private PagedLoader mLoader; private SwipeRefreshLayout mSwipeLayout; private TextView headView; public BaseListProcesser(DataProvider provider) { super(provider); } @Override public void assumeView(View view) { this.listView = (ListView) view.findViewById(android.R.id.list); this.mSwipeLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipe_container); this.mSwipeLayout.setSize(SwipeRefreshLayout.DEFAULT); this.mSwipeLayout.setOnRefreshListener(this); this.mSwipeLayout.setColorSchemeColors(colorPrimary, colorPrimaryDark,colorAccent); this.headView = (TextView) LayoutInflater.from(mActivity).inflate(R.layout.type_head, listView, false); this.headView.setText("类型:" + provider.getTypeName()); this.listView.addHeaderView(headView, null, false); PagedLoader.OnLoadListener loadListener = new PagedLoader.OnLoadListener() { @Override public void onLoading(PagedLoader pagedLoader, boolean isAutoLoad) { BaseListProcesser.this.provider.loadNextData(); } }; this.mLoader = PagedLoader.from(listView).setFinallyText(R.string.end).setOnLoadListener(loadListener).builder(); this.mLoader.setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(), true, true)); this.mLoader.setAdapter(this.provider.getAdapter()); this.listView.setOnItemClickListener(getOnItemClickListener()); this.listView.setOnItemLongClickListener(getOnItemLongClickListener()); } private AdapterView.OnItemLongClickListener getOnItemLongClickListener() { return provider.getOnItemLongClickListener(); } private AdapterView.OnItemClickListener getOnItemClickListener() { return provider.getOnItemClickListener(); } @Override public void loadData(final boolean startup) { Toolkit.runInUIThread(new Runnable() { @Override public void run() { provider.loadData(startup); if (!provider.isCached() || PrefKit.getBoolean(mActivity, mActivity.getString(R.string.pref_auto_reflush_key), false)) { mSwipeLayout.setRefreshing(true); onRefresh(); } } }, startup ? 260 : 0); } public void onResume() { if (PrefKit.getBoolean(mActivity, mActivity.getString(R.string.pref_auto_page_key), false)) { this.mLoader.setMode(PagedLoader.Mode.AUTO_LOAD); } else { this.mLoader.setMode(PagedLoader.Mode.CLICK_TO_LOAD); } } @Override public void onRefresh() { if(mLoader.getAdapter().getCount()>0) { mLoader.setEnable(true); } provider.loadNewData(); } @Override public void onLoadStart() { } @Override public void onLoadSuccess(List<DataType> items) { } @Override public void onLoadFinish(int size) { provider.getAdapter().notifyDataSetChanged(); if (provider.getAdapter().getCount()<provider.getPageSize()||size==0) { mLoader.setFinally(); } else { mLoader.setLoading(false); } if (mSwipeLayout.isRefreshing()) { mSwipeLayout.setRefreshing(false); } } public ListView getListView() { return listView; } public PagedLoader getLoader() { return mLoader; } public SwipeRefreshLayout getSwipeLayout() { return mSwipeLayout; } @Override public void onLoadFailure() { } public DataProvider getProvider() { return provider; } public void setHeadViewText(String type){ if(headView!=null) { headView.setText("类型:" + type); } } }