package com.hupu.games.fragment; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import com.hupu.games.R; import com.hupu.games.activity.HupuHomeActivity; import com.hupu.games.common.HupuLog; import com.hupu.games.data.BaseEntity; import com.hupu.games.view.PinnedHeaderXListView; import com.hupu.games.view.PinnedHeaderXListView.IXListViewListener; import com.pyj.http.RequestParams; public class BaseGameFragment extends BaseFragment { protected RequestParams mParams; protected View mProgressBar; HupuHomeActivity mAct; PinnedHeaderXListView listview; /** 请求的比赛列表的队列,主要避免了重复请求同一天的比赛 */ protected ArrayList<String> mListReqQue; /** 请求之前的数据的日期参数 */ protected int preDate; /** 请求之后的数据的日期参数 */ protected int nextDate; protected String mToday; int mMinDate; int mMaxDate; /** 请求的日期队列 */ protected ArrayList<String> mDateList; protected ArrayList<String> mBlockTypeList; public String mTag; protected int headerHeight; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mListReqQue = new ArrayList<String>(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // HupuLog.d("fb", "onCreateView=" + getClass().getSimpleName() // + " ;tag=" + mTag); View v = inflater.inflate(R.layout.fragment_games, null); if(headerHeight==0) setHeight(); mAct = (HupuHomeActivity) getActivity(); listview = (PinnedHeaderXListView) v .findViewById(R.id.list_games); mProgressBar = v.findViewById(R.id.probar); listview.setXListViewListener(new pullListener()); listview.setLoadTextEnable(false); listview.setRefreshViewEnable(false); setAdapter(); if (mDateList == null || mDateList.size() == 0) { reqDefaultData();// 如果没有数据,先请求最新数据 listview.setPullRefreshEnable(false); } else { if(mMinDate>0){ listview.setPullRefreshEnable(preDate>mMinDate); listview.setPullLoadEnable(nextDate<mMaxDate); } } // HupuLog.d("fb", " onCreateView =" + mTag); return v; } public void setAdapter() { } /** 请求默认数据 */ public void reqDefaultData() { } // /** 下拉和上拉接口 */ // class PullListener implements IXListViewListener { // // @Override // public void onRefresh() { // prev(); // } // // @Override // public void onLoadMore() { // next(); // } // // // } /** 设置listview 上拉和下拉的监听 */ class pullListener implements IXListViewListener { @Override public void onRefresh() { prev(); } @Override public void onLoadMore() { next(); } } /** 下拉请求 */ public void prev() { // req(preDate, -1); } /** 上拉请求 */ public void next() { // req(nextDate, 1); } /** * 请求http比赛列表数据 * */ public void req(long date, int direct, int reqType) { // HupuLog.d("date=" + date + " dir=" + direct); if (date < 0) date = 0; if (mListReqQue.contains(date + "")) return; mParams = mAct.getHttpParams(true); // 不传时间信息获取最近一天的消息 if (!mAct.isActiveFragment(this)) { mParams.put("preload", "1"); } if (date > 0) { mParams.put(BaseEntity.KEY_DAY, "" + date); if (direct > 0) { mParams.put(BaseEntity.KEY_DIREC, BaseEntity.KEY_NEXT); } else if (direct < 0) { mParams.put(BaseEntity.KEY_DIREC, BaseEntity.KEY_PREV); } } // mAct.sendAppRequest(reqType, mTag, mParams, // new FragmentHttpResponseHandler()); if (mAct.sendAppRequest(reqType, mTag, mParams, new FragmentHttpResponseHandler())) mListReqQue.add(date + ""); else mListReqQue.clear(); } public void itemClick(AdapterView<?> arg0, View v, int pos, long arg3) { } /** 设置listview点击监听器 */ class ListClick implements OnItemClickListener { @Override public void onItemClick(AdapterView<?> arg0, View v, int pos, long arg3) { itemClick(arg0, v, --pos, arg3); } } /** 设置listview点击监听器 */ public void click(View v) { } class Click implements OnClickListener { @Override public void onClick(View v) { click(v); } } public void onFailure(Throwable error, int reqType) { if (listview != null) { listview.stopRefresh(); } if(mListReqQue!=null) mListReqQue.clear(); if (mProgressBar != null && mProgressBar.isShown()) mProgressBar.setVisibility(View.GONE); } int iPos; int iTop; @Override public void onStop() { if (listview != null) { iPos = listview.getFirstVisiblePosition(); if (listview.getCount() >0 && listview.getChildAt(0) != null) try { iTop = listview.getChildAt(0).getTop(); } catch (Exception e) { // TODO: handle exception iTop = 0; } else iTop = 0; listview.stopRefresh(); } super.onStop(); } private void setHeight() { DisplayMetrics metrics = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); headerHeight = (int)(30*metrics.density); } SimpleDateFormat format =new SimpleDateFormat("yyyyMMdd"); protected int getDate(int day,int dif) { int d=0; try { HupuLog.e("fb", "input day1="+day); Calendar c=Calendar.getInstance(); c.set(day/10000, (day/100%100)-1, day%100); c.roll(c.DATE, dif); d=Integer.parseInt(format.format(c.getTime()).toString()); } catch (NumberFormatException e) { e.printStackTrace(); HupuLog.e("fb", "input day2="+day); d =day+dif; } return d; } }