package com.example.dremone.fragment;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
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.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.example.common.NetWorks;
import com.example.common.SdCardTools;
import com.example.database.DurationDb;
import com.example.domain.Curriculum;
import com.example.domain.Duration;
import com.example.download.DownloadCase;
import com.example.dremone.R;
import com.example.dremone.VideoDetailActivity;
import com.example.http.DurationHttp;
public class FragmentDurationItem_1 extends Fragment {
// 播放路径处理
private VideoDetailActivity detailActivity;
private String path;
private void managePath(String title, String path, Integer state) {
String[] msgs = new String[2];
Handler handler = detailActivity.getHandler();
if (state == 0 && this.path == null) {
this.path = path;
// 基础数据转换
msgs[0] = path;
msgs[1] = title;
Message msg = handler.obtainMessage(0, msgs);
handler.sendMessage(msg);
} else if (state == 1) {
this.path = path;
// 基础数据转换
msgs[0] = path;
msgs[1] = title;
Message msg = handler.obtainMessage(0, msgs);
handler.sendMessage(msg);
}
}
private Curriculum curriculumInfo;
private ListView lv_durationItem;
private TextView durationcount_1;// 总课时信息
private DurationDb durationDb ;
@SuppressLint("SimpleDateFormat")
private SimpleDateFormat simpleDateFormatCount = new SimpleDateFormat("mm");
@SuppressLint("HandlerLeak")
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
// 有网更新课程信息
@SuppressWarnings("unchecked")
final List<Duration> lists = (List<Duration>) msg.obj;
lv_durationItem.setAdapter(new MyExpandBodyAdapter(lists,
getActivity()));
// 添加原始数据检查是否需要更新
new Thread() {
public void run() {
durationDb.AddDataOriginal(lists);
};
}.start();
break;
case 1:
// 无网更新本地课程信息
@SuppressWarnings("unchecked")
final List<Duration> lists1 = (List<Duration>) msg.obj;
lv_durationItem.setAdapter(new MyExpandBodyAdapter(lists1,
getActivity()));
break;
case 2:
Toast.makeText(getActivity(), "开始下载", Toast.LENGTH_SHORT)
.show();
break;
case 3:
Toast.makeText(getActivity(), "下载完成", Toast.LENGTH_SHORT)
.show();
break;
}
}
};
public FragmentDurationItem_1(Curriculum curriculum) {
this.curriculumInfo = curriculum;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_duration_item_1,
container, false);
init(view);
isNetDuration();
return view;
}
/**
* 初始化基础数据
*/
private void init(View view) {
// 初始化数据库配置
durationDb = new DurationDb(getActivity());
lv_durationItem = (ListView) view.findViewById(R.id.lv_durationItem);
durationcount_1 = (TextView) view.findViewById(R.id.durationcount_1);
// 初始化activity
detailActivity = (VideoDetailActivity) getActivity();
// 课时单击时
lv_durationItem.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Duration duration = ((Duration) arg1.getTag());
String path = duration.getUrl();
String title = duration.getName();
managePath(title, path, 1);
}
});
// 初始化总课时数
durationcount_1.setText("共" + curriculumInfo.getDurationCount() + "课时");
}
/**
* 根据网络链接情况判断是否重新获取视频信息
*/
public void isNetDuration() {
if (NetWorks.isNetworkAvailable(getActivity())) {
DurationHttp.getDurationInfo(curriculumInfo.getId().toString(),
handler, getActivity());
} else {
Toast.makeText(getActivity(), "无网络读取本地数据", Toast.LENGTH_SHORT)
.show();
new Thread() {
public void run() {
durationDb.queryDataOriginal(handler, curriculumInfo
.getId().toString());
};
}.start();
}
}
private class MyExpandBodyAdapter extends BaseAdapter {
private List<Duration> lists;
private TextView durationnumber;// 课时序号
private TextView durationname;// 课时名称
private TextView durationtime;// 时长
private ImageView durationdownload;// 下载地址对象
@SuppressLint("SimpleDateFormat")
private SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
"mm:ss");
// 时间格式化工具
private Context context;
public MyExpandBodyAdapter(List<Duration> lists, Context context) {
this.lists = lists;
this.context = context;
}
@Override
public int getCount() {
return lists.size();
}
@Override
public Object getItem(int position) {
return lists.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Duration duration = lists.get(position);
if (convertView == null) {
convertView = View.inflate(context,
R.layout.fragment_duration_item_1_item, null);
convertView.setTag(duration);
} else {
duration = (Duration) convertView.getTag();
}
// ----开始处理视频播放
if (position == 0)
managePath(duration.getName(), duration.getUrl(), 0);
// ----结束处理视频播放
durationnumber = (TextView) convertView
.findViewById(R.id.durationnumber);
durationname = (TextView) convertView
.findViewById(R.id.durationname);
durationtime = (TextView) convertView
.findViewById(R.id.durationtime);
durationdownload = (ImageView) convertView
.findViewById(R.id.durationdownload);
// 单击课时下载时
durationdownload.setOnClickListener(new DownloadOnClickListener(
context));
// Integer id = duration.getId();// Id
String name = duration.getName();// name
Long timeSpan = duration.getTimeSpan();// 时间
// Integer useFlag = duration.getUseFlag();// 是否是vip
// String briefIntroduction = duration.getBriefIntroduction();// 简介
durationnumber.setText("课时:" + (position + 1) + " ");
durationname.setText(name);
durationtime.setText(simpleDateFormat.format(new Date(timeSpan)));
durationdownload.setTag(duration);
return convertView;
}
/*
* 当课时下载被单击时
*/
private class DownloadOnClickListener implements OnClickListener {
private Context context;
public DownloadOnClickListener(Context context) {
this.context = context;
}
@Override
public void onClick(View v) {
Duration duration = (Duration) v.getTag();
String url = duration.getUrl();
if (SdCardTools.isExtenceSdcard()) {
url = getResources().getString(R.string.servicename)
+ "fileImage/curriculumVideo/" + url;
new DownloadCase(context).downloadVideo(url, duration);
} else {
Toast.makeText(context, "不能下载sdCard不存在", Toast.LENGTH_SHORT)
.show();
}
}
}
}
}