package com.letv.watchball.fragment;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.InflateException;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.letv.http.bean.LetvDataHull;
import com.letv.http.parse.LetvGsonParser;
import com.letv.watchball.LetvApplication;
import com.letv.watchball.R;
import com.letv.watchball.async.LetvHttpAsyncTask;
import com.letv.watchball.bean.LocalCacheBean;
import com.letv.watchball.bean.VideoTypes;
import com.letv.watchball.bean.VideoTypes.VideoBean;
import com.letv.watchball.http.api.LetvHttpApi;
import com.letv.watchball.manager.HomeFragmentLsn;
import com.letv.watchball.utils.LetvCacheDataHandler;
import com.letv.watchball.utils.LetvUtil;
import com.letv.watchball.utils.UIs;
public class VideoNewsFragment extends Fragment {
VideoListFragment videoListFragment;
/**
* 最新,最热button
*/
private LinearLayout video_news_fragment_filterRadioButton_orderBy;
/**
* 球队ItemId Button
*/
private LinearLayout video_news_fragment_filterRadioButton_itemId;
private TextView video_news_fragment_selector_title1,
video_news_fragment_selector_title2;
private ImageView video_news_fragment_selector_icon1,
video_news_fragment_selector_icon2, refresh;
/**
* 筛选ListView
*/
private ListView video_news_lstFilter;
private LinearLayout video_news_lstFilter_cover;
private FilterAdapter filterAdapter;
/**
* 球队筛选类型数据
*/
private VideoBean[] newsTypeBean;
/**
* 排序筛选类型,最新,最热
*/
private VideoBean[] sortTypeBean;
/**
* 当前筛选数据类型
*/
private VideoBean[] currentTypeBean;
/**
* 当前的排序类型,球队筛选类型
*/
private int mNewsTypeItemPos, mSortTypeItmePos = 0;
/**
* video_news_lstFilter listview的高度,默认200
*/
private int lstFilterHeight = 200;
private HomeFragmentLsn mHomeFragmentLsn;
private LinearLayout bad_network;
private RelativeLayout video_news_fragment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// VideoTypes.Body body0 = new VideoTypes.Body();
// body0.name = "最新";
// body0.type = LetvConstant.VideoNewsOrderBy.DATE;
// VideoTypes.Body body1 = new VideoTypes.Body();
// body1.name = "最热";
// body1.type = LetvConstant.VideoNewsOrderBy.PLAYCOUNT;
// sortTypeBean.body = new Body[] { body0, body1 };
}
private ViewGroup rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
try {
rootView = (ViewGroup) inflater.inflate(
R.layout.video_news_fragment, null, false);
} catch (InflateException e) {
/* map is already there, just return view as it is */
}
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
video_news_fragment = (RelativeLayout) getView().findViewById(
R.id.video_news_fragment);
// 初始化ListFragment
videoListFragment = (VideoListFragment) getActivity()
.getSupportFragmentManager().findFragmentById(
R.id.video_news_fragment_videoList);
videoListFragment.showFocusPic = true;
// videoListFragment.requsetData(true);
video_news_fragment_filterRadioButton_orderBy = (LinearLayout) getView()
.findViewById(
R.id.video_news_fragment_filterRadioButton_orderBy);
video_news_fragment_filterRadioButton_itemId = (LinearLayout) getView()
.findViewById(R.id.video_news_fragment_filterRadioButton_itemId);
video_news_fragment_selector_title1 = (TextView) getView()
.findViewById(R.id.news_list_selector_title1);
video_news_fragment_selector_title2 = (TextView) getView()
.findViewById(R.id.news_list_selector_title2);
video_news_fragment_selector_icon1 = (ImageView) getView()
.findViewById(R.id.news_list_selector_icon1);
video_news_fragment_selector_icon2 = (ImageView) getView()
.findViewById(R.id.news_list_selector_icon2);
refresh = (ImageView) getView().findViewById(R.id.refresh);
video_news_lstFilter = (ListView) getView().findViewById(
R.id.video_news_lstFilter);
video_news_lstFilter_cover = (LinearLayout) getView().findViewById(
R.id.video_news_lstFilter_cover);
videoListFragment.setImageView(refresh);
refresh.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
switch (arg1.getAction()) {
case MotionEvent.ACTION_DOWN:
refresh.setAlpha(100);
break;
case MotionEvent.ACTION_UP:
refresh.setAlpha(255);
new RequestVrsVideosType(getActivity()).start();
videoListFragment.setbuttontype(1);
videoListFragment.requsetData(true);
String fristdate = new SimpleDateFormat("HH:mm:ss",
Locale.CHINESE).format(Calendar.getInstance()
.getTime());
Toast.makeText(getActivity(), "比赛数据已更新:" + fristdate,
Toast.LENGTH_SHORT).show();
break;
case MotionEvent.ACTION_MOVE:
refresh.setAlpha(255);
break;
}
return true;
}
});
video_news_lstFilter_cover.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
video_news_lstFilter_cover.setVisibility(View.GONE);
if (video_news_fragment_filterRadioButton_orderBy.isSelected()) {
video_news_fragment_filterRadioButton_orderBy
.performClick();
} else if (video_news_fragment_filterRadioButton_itemId
.isSelected()) {
video_news_fragment_filterRadioButton_itemId.performClick();
}
}
});
video_news_fragment_filterRadioButton_orderBy
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
video_news_fragment_filterRadioButton_itemId
.setSelected(false);
if (v.isSelected()) {
v.setSelected(false);
video_news_lstFilter_cover.setVisibility(View.GONE);
video_news_fragment_selector_icon1
.setImageResource(R.drawable.news_list_selector_btn_nor);
} else {
v.setSelected(true);
currentTypeBean = sortTypeBean;
filterAdapter.onItemClicked(mSortTypeItmePos);
filterAdapter.notifyDataSetChanged();
LayoutParams params = video_news_lstFilter
.getLayoutParams();
params.height = LayoutParams.WRAP_CONTENT;
video_news_lstFilter.setLayoutParams(params);
video_news_lstFilter.requestLayout();
video_news_lstFilter_cover
.setVisibility(View.VISIBLE);
video_news_fragment_selector_icon1
.setImageResource(R.drawable.news_list_selector_btn_sel);
video_news_fragment_selector_icon2
.setImageResource(R.drawable.news_list_selector_btn_nor);
}
}
});
video_news_fragment_filterRadioButton_itemId
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
video_news_fragment_filterRadioButton_orderBy
.setSelected(false);
if (v.isSelected()) {
v.setSelected(false);
video_news_lstFilter_cover.setVisibility(View.GONE);
video_news_fragment_selector_icon2
.setImageResource(R.drawable.news_list_selector_btn_nor);
} else {
v.setSelected(true);
currentTypeBean = newsTypeBean;
filterAdapter.onItemClicked(mNewsTypeItemPos);
filterAdapter.notifyDataSetChanged();
LayoutParams params = video_news_lstFilter
.getLayoutParams();
params.height = lstFilterHeight;
video_news_lstFilter.setLayoutParams(params);
video_news_lstFilter.requestLayout();
video_news_lstFilter_cover
.setVisibility(View.VISIBLE);
video_news_fragment_selector_icon2
.setImageResource(R.drawable.news_list_selector_btn_sel);
video_news_fragment_selector_icon1
.setImageResource(R.drawable.news_list_selector_btn_nor);
}
}
});
video_news_lstFilter
.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
video_news_fragment_filterRadioButton_orderBy
.setSelected(false);
video_news_fragment_filterRadioButton_itemId
.setSelected(false);
video_news_fragment_selector_icon1
.setImageResource(R.drawable.news_list_selector_btn_nor);
video_news_fragment_selector_icon2
.setImageResource(R.drawable.news_list_selector_btn_nor);
video_news_lstFilter_cover.setVisibility(View.GONE);
LetvApplication.getInstance().setShowVideoList(true);
if (currentTypeBean == sortTypeBean) {
// 保存当前选中位置
mSortTypeItmePos = position;
// 排序,最新最热筛选
videoListFragment
.setCurrentOrderBy(currentTypeBean[position].id);
video_news_fragment_selector_title1
.setText(currentTypeBean[position].name);
} else if (currentTypeBean == newsTypeBean) {
// 保存当前选中位置
mNewsTypeItemPos = position;
// 赛事Item 筛选
videoListFragment
.setItemId(currentTypeBean[position].id);
video_news_fragment_selector_title2
.setText(currentTypeBean[position].name);
}
}
});
filterAdapter = new FilterAdapter();
video_news_lstFilter.setAdapter(filterAdapter);
video_news_lstFilter.setCacheColorHint(Color.TRANSPARENT);
if (video_news_lstFilter.getLayoutParams().height > 0) {
lstFilterHeight = video_news_lstFilter.getLayoutParams().height;
}
bad_network = (LinearLayout) getView().findViewById(R.id.bad_network);
bad_network.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (!LetvUtil.CheckNetworkState()) {
UIs.showToast("没有网络");
return;
}
requestFiltetTypeData();
if (null != mHomeFragmentLsn) {
mHomeFragmentLsn.reloadAllDatas();
}
}
});
// requestFiltetTypeData();
}
/**
* 执行新闻筛选的关闭操作
*
* @return 视频新闻筛选 list是否已关闭
*/
public boolean closeNewsFilter() {
boolean isClose = video_news_lstFilter_cover.getVisibility() == View.GONE;
if (video_news_fragment_filterRadioButton_itemId.isSelected()) {
video_news_fragment_filterRadioButton_itemId.performClick();
}
if (video_news_fragment_filterRadioButton_orderBy.isSelected()) {
video_news_fragment_filterRadioButton_orderBy.performClick();
}
return isClose;
}
@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
}
private boolean isFirtInit = true;
/**
* 请求视频新闻筛选类型
*/
public void requestFiltetTypeData() {
if (bad_network.getVisibility() == View.VISIBLE) {
bad_network.setVisibility(View.GONE);
video_news_fragment.setVisibility(View.VISIBLE);
isFirtInit = true;
}
if (isFirtInit) {
isFirtInit = false;
new RequestVrsVideosType(getActivity()).start();
videoListFragment.requsetData(true);
}
}
/**
* @author Liuheyuan 筛选适配器
*/
class FilterAdapter extends BaseAdapter {
private int mCurrentPos;
public void onItemClicked(int pos) {
this.mCurrentPos = pos;
}
@Override
public int getCount() {
if (null != currentTypeBean) {
return currentTypeBean.length;
}
return 0;
}
@Override
public Object getItem(int position) {
if (null != currentTypeBean) {
return currentTypeBean.length;
}
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = LayoutInflater.from(getActivity()).inflate(
R.layout.news_list_selector_type, null);
TextView tView = (TextView) view
.findViewById(R.id.news_list_selector_type_name);
tView.setText(currentTypeBean[position].name);
// //设置点击item背景
if (mCurrentPos == position) {
view.findViewById(R.id.news_list_selector_selection)
.setVisibility(View.VISIBLE);
// view.setBackgroundResource(R.drawable.news_list_selector_item_bg);
} else {
view.findViewById(R.id.news_list_selector_selection)
.setVisibility(View.INVISIBLE);
// view.setBackgroundResource(0);
}
return view;
}
}
/**
* @author Liuheyuan 请求视频新闻类型
*/
private class RequestVrsVideosType extends LetvHttpAsyncTask<VideoTypes> {
public RequestVrsVideosType(Context context) {
super(context, false);
}
@Override
public VideoTypes loadLocalData() {
try {
LocalCacheBean bean = LetvCacheDataHandler.readVideoTypesData();
VideoTypes result = new LetvGsonParser<VideoTypes>(0,
VideoTypes.class).initialParse(bean.getCacheData());
return result;
} catch (Exception e) {
}
return null;
}
@Override
public boolean loadLocalDataComplete(VideoTypes t) {
if (null != t) {
onPostExecute(0, t);
return true;
}
return false;
}
@Override
public LetvDataHull<VideoTypes> doInBackground() {
LetvDataHull<VideoTypes> dataHull = null;
dataHull = LetvHttpApi.requestVideoTypes(0,
new LetvGsonParser<VideoTypes>(0, VideoTypes.class));
// dataHull = LetvHttpApi.requestVideoTypes(new
// LetvGsonParser<VideoTypes>(0, VideoTypes.class));
if (dataHull.getDataType() == LetvDataHull.DataType.DATA_IS_INTEGRITY) {
LetvCacheDataHandler.saveVideoTypesData(dataHull
.getSourceData());
}
return dataHull;
}
@Override
public void onPostExecute(int updateId, VideoTypes result) {
if (null != result) {
sortTypeBean = result.body.sort;
newsTypeBean = result.body.filter;
}
if (null != filterAdapter) {
filterAdapter.notifyDataSetChanged();
}
}
@Override
public void dataNull(int updateId, String errMsg) {
// super.dataNull(updateId, errMsg);
}
@Override
public void netErr(int updateId, String errMsg) {
if (!isLocalSucceed()) {
bad_network.setVisibility(View.VISIBLE);
video_news_fragment.setVisibility(View.GONE);
}
}
@Override
public void netNull() {
if (!isLocalSucceed()) {
bad_network.setVisibility(View.VISIBLE);
video_news_fragment.setVisibility(View.GONE);
}
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
if (rootView != null) {
ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null)
parent.removeView(rootView);
}
/**
* frament 销毁时,移除此fragment
*/
Fragment fragment = getFragmentManager().findFragmentById(
R.id.root_video);
FragmentTransaction ft = getActivity().getSupportFragmentManager()
.beginTransaction();
if (null != fragment && !ft.isEmpty()) {
ft.remove(fragment).commitAllowingStateLoss();
}
videoListFragment = null;
video_news_fragment_filterRadioButton_orderBy = null;
video_news_fragment_filterRadioButton_itemId = null;
video_news_fragment_selector_title1 = null;
video_news_fragment_selector_title2 = null;
video_news_fragment_selector_icon1 = null;
video_news_fragment_selector_icon2 = null;
video_news_lstFilter = null;
video_news_lstFilter_cover = null;
filterAdapter = null;
newsTypeBean = null;
currentTypeBean = null;
sortTypeBean = null;
mHomeFragmentLsn = null;
bad_network = null;
video_news_fragment = null;
}
public void setHomeFragmentLsn(HomeFragmentLsn mHomeFragmentLsn) {
this.mHomeFragmentLsn = mHomeFragmentLsn;
}
}