package com.hupu.games.fragment; import java.util.LinkedList; import android.annotation.SuppressLint; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; import android.net.Uri; import android.os.Bundle; 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 android.widget.Button; import com.hupu.games.R; import com.hupu.games.activity.HupuBaseActivity; import com.hupu.games.activity.WebViewActivity; import com.hupu.games.adapter.VideoListAdapter; import com.hupu.games.common.HuPuRes; import com.hupu.games.common.HupuLog; import com.hupu.games.data.VideoEntity; import com.hupu.games.data.VideoResp; import com.hupu.games.view.XListView; import com.hupu.games.view.XListView.IXListViewListener; import com.pyj.http.RequestParams; @SuppressLint("ValidFragment") public class VideoFragment extends BaseFragment { private XListView mListVideo; private Button mVideoBtn1; private Button mVideoBtn2; private VideoListAdapter mVideoAdapter; private LinkedList<VideoEntity> mData1; private LinkedList<VideoEntity> mData2; private int frame = 0; private long last1Vid; private long last2Vid; /** 最后刷新比赛视频的时间 */ private long mLastTime1; /** 最后刷新推荐视频的时间 */ private long mLastTime2; /***/ private static final long TEN_MINS = 600000; /***/ boolean bNeedFresh1; /***/ boolean bNeedFresh2; private Click click; private RequestParams mParams; private int method1; private int method2; private int method1Next; private int method2Next; private String reqTag1; private String reqTag2; boolean hasBtnTxt; int mode; private String mTag; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(mTag==null) { mTag = getArguments().getString("tag"); mode=getArguments().getInt("mode"); setMode(mode,mTag); } } public void setMode(int m,String tag) { mode = m; mTag =tag; if (mode == 0) { // nba } else if (mode == 1) { // cba method1 = HuPuRes.REQ_METHOD_GET_CBA_VIDEO_GAME; method2 = 10000; method1Next = HuPuRes.REQ_METHOD_GET_CBA_VIDEO_GAME_NEXT; method2Next = 10000; } else { // 足球和杯赛 method1 = HuPuRes.REQ_METHOD_GET_FOOTBALL_VIDEO; method2 = 10000; method1Next = HuPuRes.REQ_METHOD_GET_FOOTBALL_VIDEO_NEXT; method2Next = 10000; } clearVideo(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_video, container, false); if(click==null) { click = new Click(); mVideoAdapter = new VideoListAdapter(getActivity()); } if (mode == 0) { mVideoBtn1 = (Button) v.findViewById(R.id.btn_video_1); mVideoBtn2 = (Button) v.findViewById(R.id.btn_video_2); if (!hasBtnTxt) { mVideoBtn1.setClickable(false); mVideoBtn2.setClickable(false);// 由于需要从服务端拉取tabs,所以一上来不能点击。 }else { mVideoBtn1.setText(tab1); mVideoBtn2.setText(tab2); } mVideoBtn1.setOnClickListener(click); mVideoBtn2.setOnClickListener(click); } else { v.findViewById(R.id.layout_top).setVisibility(View.GONE); } mListVideo = (XListView) v.findViewById(R.id.list_video); if (mVideoAdapter.getCount()==0) { if (mData2 != null) { swtichToFrame(1); refreshListViewData(1); mListVideo.setSelection(0); }else{ reqNewData(false, null); mListVideo.setPullLoadEnable(false, false); } } else { swtichToFrame(frame); mListVideo.setPullLoadEnable(true, false); } mListVideo.setOnItemClickListener(new ListClick()); mListVideo.setXListViewListener(new pullListener()); mListVideo.setAdapter(mVideoAdapter); // 初始化时不需要刷新 //mListVideo.setPullLoadEnable(false, false); return v; } public void clearVideo() { // Log.d("video fragment","clearVideo"); if (mVideoAdapter != null) mVideoAdapter.setData(null); if (mData1 != null) mData1.clear(); if (mData2 != null) mData2.clear(); bNeedFresh1 = true; bNeedFresh2 = true; reqTag1 = null; reqTag2 = null; } /** 获取最新数据 */ public void reqNewData(boolean isMan, String type) { HupuLog.d("reqNewData", "type =" + type + " isMan=" + isMan+"--frame="+frame +"--method="+method1); if (frame == 0) { if (mData1 == null) mListVideo.setPullLoadEnable(false, false); if (!isMan) mListVideo.setFreshState(); if (method1 > 0) reqVideoData(method1, 0, type); else reqVideoData(HuPuRes.REQ_METHOD_GET_NBA_VIDEO, 0, null); } else { if (mData2 == null) mListVideo.setPullLoadEnable(false, false); if (!isMan) mListVideo.setFreshState(); reqVideoData(method2, 0, type); } } /** 排行视频数据 */ private void reqVideoData(int reqid, long vid, String type) { mParams = mAct.getHttpParams(true); if (!mAct.isActiveFragment(this)) { mParams.put("preload", "1"); } if (type != null) mParams.put("type", type); if (vid > 0) mParams.put("vid", "" + vid); switch (reqid) { case HuPuRes.REQ_METHOD_GET_NBA_VIDEO_GAME_NEXT: case HuPuRes.REQ_METHOD_GET_NBA_VIDEO_HOT_NEXT: case HuPuRes.REQ_METHOD_GET_CBA_VIDEO_GAME_NEXT: case HuPuRes.REQ_METHOD_GET_FOOTBALL_VIDEO_NEXT: mParams.put("direc", "next"); break; } // mAct.sendTagRequest(reqid, mParams); mAct.sendAppRequest(reqid,mTag, mParams,new FragmentHttpResponseHandler()); } int pageGame; int pageHot; /** 获取更多数据 */ private void reqMoreData() { HupuLog.d("reqMoreData", "type ===="); if (frame == 0) { reqVideoData(method1Next, last1Vid, reqTag1); } else { reqVideoData(method2Next, last2Vid, reqTag2); } } /** * 由其他的页面切换进入 * */ public void entry() { if (mAct != null) { long curTime = System.currentTimeMillis(); if (curTime - mLastTime1 > TEN_MINS) { bNeedFresh1 = true; } if (curTime - mLastTime2 > TEN_MINS) { bNeedFresh2 = true; } if (frame == 0 && bNeedFresh1 || frame == 1 && bNeedFresh2) { if (frame == 0) reqNewData(false, reqTag1); else reqNewData(false, reqTag2); HupuLog.d("entry", "type ====="); } } } boolean bOpen; String tab1; String tab2; /** * 赋值并刷新 * */ public void setData(int method, Object o) { HupuLog.d("setData", "method =====" + method); VideoResp resp = (VideoResp) o; if (!hasBtnTxt && resp.tabs1 != null) { tab1 =resp.tabs1; tab2 =resp.tabs2; mVideoBtn1.setText(resp.tabs1); mVideoBtn2.setText(resp.tabs2); mVideoBtn1.setClickable(true); mVideoBtn2.setClickable(true); // 设置所有的请求参数 reqTag1 = resp.tabsTap1; reqTag2 = resp.tabsTap2; if (reqTag1.equals("game")) { method1 = HuPuRes.REQ_METHOD_GET_NBA_VIDEO_GAME; method2 = HuPuRes.REQ_METHOD_GET_NBA_VIDEO_HOT; method1Next = HuPuRes.REQ_METHOD_GET_NBA_VIDEO_GAME_NEXT; method2Next = HuPuRes.REQ_METHOD_GET_NBA_VIDEO_HOT_NEXT; } else { method2 = HuPuRes.REQ_METHOD_GET_NBA_VIDEO_GAME; method1 = HuPuRes.REQ_METHOD_GET_NBA_VIDEO_HOT; method2Next = HuPuRes.REQ_METHOD_GET_NBA_VIDEO_GAME_NEXT; method1Next = HuPuRes.REQ_METHOD_GET_NBA_VIDEO_HOT_NEXT; } hasBtnTxt = true; if (resp.on == 1) { // 默认显示第二个标签 method = method2; swtichToFrame(1); } else { method = method1; } } bOpen = resp.open == 1 ? true : false; if (resp.nextDataExists > 0) mListVideo.setPullLoadEnable(true, false); else { mListVideo.setPullLoadEnable(false, false); if (method1Next == method) mAct.showToast("没有更多视频了"); } if (method == method1) { mLastTime1 = System.currentTimeMillis(); bNeedFresh1 = false; } else if (method == method1Next) { if (mData1 == null) method = method1; } else if (method == method2) { mLastTime2 = System.currentTimeMillis(); bNeedFresh2 = false; } else if (method == method2Next) { if (mData2 == null) method = method2; } // --- if (method == method1) { mData1 = resp.mList; pageGame = 0; // Log.d("setData", "set all"+resp.mList.size()); } else if (method == method1Next) { // Log.d("setData", "add all"+resp.mList.size()); mData1.addAll(resp.mList); } else if (method == method2) { mData2 = resp.mList; pageHot = 0; } else if (method == method2Next) { mData2.addAll(resp.mList); } if (method == method1 || method == method1Next) last1Vid = resp.lastVId; else last2Vid = resp.lastVId; refreshListViewData(method == method1 || method == method1Next ? 0 : 1); } /** 停止加载动画 */ public void stopLoad(boolean bDelay) { // Log.d("video", "stopLoad"); mListVideo.stopRefresh(); mListVideo.stopLoadMore(); } /** 刷新列表数据 */ private void refreshListViewData(int type) { HupuLog.e("papa", "-----"+type+"----"+frame); if (type == 0 && frame == 0) mVideoAdapter.setData(mData1); if (type == 1 && frame == 1) mVideoAdapter.setData(mData2); } private class Click implements OnClickListener { @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.btn_video_1: swtichToFrame(0); refreshListViewData(0); if (mData1 != null) mListVideo.setSelection(0); if (mData1 == null || bNeedFresh1) reqNewData(false, reqTag1); break; case R.id.btn_video_2: swtichToFrame(1); refreshListViewData(1); if (mData2 != null) mListVideo.setSelection(0); if (mData2 == null || bNeedFresh2) { reqNewData(false, reqTag2); } break; } } } /** 设置listview 上拉和下拉的监听 */ class pullListener implements IXListViewListener { @Override public void onRefresh() { if (frame == 0) reqNewData(true, reqTag1); else reqNewData(true, reqTag2); } @Override public void onLoadMore() { if ((frame == 0 && mData1 != null) || (frame == 1 && mData2 != null)) { reqMoreData(); } // reqMoreData(); } } /** 设置listview点击监听器 */ class ListClick implements OnItemClickListener { @Override public void onItemClick(AdapterView<?> arg0, View v, final int pos, long arg3) { if (pos < 1) return; if (((HupuBaseActivity)getActivity()).checkNetIs2Gor3G()) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage(getActivity().getString(R.string.play_video_2G3G)) .setCancelable(false) .setPositiveButton(getString(R.string.cancel), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }) .setNegativeButton(getString(R.string.play_video_next), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { toVideoAct(pos); } }); AlertDialog alert = builder.create(); alert.show(); }else { toVideoAct(pos); } } } private void toVideoAct(int pos){ if (bOpen) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(mVideoAdapter.getItem(pos - 1).fromurl)); startActivity(intent); } else { Intent in = new Intent(getActivity(), WebViewActivity.class); in.putExtra("content", mVideoAdapter.getItem(pos - 1).title);//为了分享功能加入 in.putExtra("url", mVideoAdapter.getItem(pos - 1).fromurl); in.putExtra("source", mVideoAdapter.getItem(pos - 1).source); startActivity(in); } } private void swtichToFrame(int f) { frame = f; if(mode==0) { if (frame == 0) { mVideoBtn1.setTextColor(Color.WHITE); mVideoBtn1.setBackgroundResource(R.drawable.btn_rank_type_bg_down); mVideoBtn2.setBackgroundResource(R.drawable.btn_rank_type_selector); mVideoBtn2.setTextColor(Color.GRAY); } else { mVideoBtn2.setTextColor(Color.WHITE); mVideoBtn2.setBackgroundResource(R.drawable.btn_rank_type_bg_down); mVideoBtn1.setBackgroundResource(R.drawable.btn_rank_type_selector); mVideoBtn1.setTextColor(Color.GRAY); } } } @Override public void onSuccess(Object o, int reqType) { stopLoad(false); if (o != null) setData(reqType, o); } public void onFailure(Throwable error, int reqType) { stopLoad(false); } }