package com.hyrt.cei.adapter; import java.util.HashMap; import java.util.List; import com.hyrt.cei.R; import com.hyrt.cei.application.CeiApplication; import com.hyrt.cei.db.DataHelper; import com.hyrt.cei.ui.common.WebViewUtil; import com.hyrt.cei.ui.phonestudy.CourseDetailActivity; import com.hyrt.cei.ui.phonestudy.PlayRecordCourseActivity; import com.hyrt.cei.ui.phonestudy.PreloadActivity; import com.hyrt.cei.util.AsyncImageLoader; import com.hyrt.cei.util.BitmapManager; import com.hyrt.cei.util.MyTools; import com.hyrt.cei.util.XmlUtil; import com.hyrt.cei.vo.Courseware; import com.hyrt.cei.vo.ImageResourse; import com.hyrt.cei.vo.Preload; import com.hyrt.cei.webservice.service.Service; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.BitmapFactory; import android.graphics.drawable.Drawable; import android.os.Handler; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.TextView; public class PhoneStudyRecordAdapter extends BaseAdapter { private int itemLayout; private LayoutInflater inflater; private List<Courseware> coursewares; private DataHelper dataHelper; private ListView lv; private HashMap<String, Drawable> drawables = new HashMap<String, Drawable>(); private Activity activity; private BitmapManager bmpManager; public static final String FLASH_GATE = "/apad.html"; public static final String FLASH_POSTFIX = ".zip"; public PhoneStudyRecordAdapter(Activity activity, int itemLayout, List<Courseware> coursewares, ListView lv) { this.activity = activity; this.itemLayout = itemLayout; this.coursewares = coursewares; this.lv = lv; inflater = (LayoutInflater) activity .getSystemService(Context.LAYOUT_INFLATER_SERVICE); dataHelper = ((CeiApplication) (activity.getApplication())).dataHelper; this.bmpManager = new BitmapManager(BitmapFactory.decodeResource(activity.getResources(), R.drawable.courseware_default_icon)); } public int getCount() { return coursewares.size(); } public Object getItem(int position) { return Integer.valueOf(position); } public long getItemId(int position) { return position; } public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null; // if (convertView == null) { holder = new ViewHolder(); convertView = inflater.inflate(itemLayout, null); holder.courseIcon = (ImageView) convertView .findViewById(R.id.phone_study_playrecord_course_icon); holder.coursePlayBtn = (ImageView) convertView .findViewById(R.id.phone_study_playrecord_play_btn); holder.downloadBtn = (ImageView) convertView .findViewById(R.id.phone_study_playrecord_download_btn); holder.addCourse = (ImageView) convertView .findViewById(R.id.phone_study_playrecord_addcourse); holder.alStudyTime = (TextView) convertView .findViewById(R.id.phone_study_playrecord_alstudytime); holder.studyStatus = (TextView) convertView .findViewById(R.id.phone_study_playrecord_studystatus); holder.totalTime = (TextView) convertView .findViewById(R.id.phone_study_playrecord_totaltime); holder.tv1 = (TextView) convertView .findViewById(R.id.phone_study_gird_item_tv1); holder.tv2 = (TextView) convertView .findViewById(R.id.phone_study_gird_item_tv2); holder.tv3 = (TextView) convertView .findViewById(R.id.phone_study_gird_item_tv3); // convertView.setTag(holder); // } else { // holder = (ViewHolder) convertView.getTag(); // } if (coursewares.get(position).getStudyTime().equals("")) coursewares.get(position).setStudyTime("0"); if (coursewares.get(position).getClassLength().equals("")) coursewares.get(position).setClassLength("0"); try { holder.alStudyTime.setText("已学习时间 :" + coursewares.get(position).getStudyTime()); } catch (Exception e) { } try { holder.studyStatus.setText(("1".equals(coursewares.get(position).getIscompleted())) ? "学习状态 :已学完" : "学习状态 :未学完"); } catch (Exception e) { } holder.totalTime.setText("总时长 : " + coursewares.get(position).getClassLength()); holder.coursePlayBtn .setImageResource(R.drawable.phone_study_playrecord_study_btn); try { if (coursewares.get(position).getUploadTime() != 0 && !"1".equals(coursewares.get(position).getIscompleted())) holder.addCourse .setImageResource(R.drawable.phone_study_uploadcourse_btn); else holder.addCourse .setImageResource(R.drawable.phone_study_uploadcourse_btn_hover); } catch (Exception e) { holder.addCourse .setImageResource(R.drawable.phone_study_uploadcourse_btn); e.printStackTrace(); } holder.tv1.setText(coursewares.get(position).getName()); holder.tv2 .setText("讲师姓名:" + coursewares.get(position).getTeacherName()); holder.tv3.setText("发布时间:" + coursewares.get(position).getProTime()); holder.coursePlayBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(activity, WebViewUtil.class); if (coursewares.get(position).getLookPath() == null) coursewares.get(position).setLookPath("file:///" + dataHelper.getPreload(coursewares.get(position).getClassId()).getLoadLocalPath() .replace( FLASH_POSTFIX, FLASH_GATE)); intent.putExtra("path", coursewares.get(position).getLookPath() == null ? "" : coursewares.get(position).getLookPath()); intent.putExtra("class", coursewares.get(position)); intent.putExtra("isRecord",true); activity.startActivity(intent); } }); holder.addCourse.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // 上传学习记录,并同步数据库的信息,更新列表 final Handler handler = new Handler(); try { if (coursewares.get(position).getUploadTime() != 0 && !"1".equals(coursewares.get(position).getIscompleted())) { new Thread(new Runnable() { @Override public void run() { if (!XmlUtil .parseReturnCode( Service.saveUserClassTime( ((CeiApplication) (activity .getApplication())).columnEntry .getUserId(), coursewares.get( position) .getClassId(), coursewares .get(position) .getUploadTime() + "")).equals( "-1")) { handler.post(new Runnable() { @Override public void run() { try{ coursewares.get(position).setStudyTime((Integer.parseInt(coursewares.get(position) .getStudyTime()) + coursewares.get(position).getUploadTime())+""); }catch(Exception e){ coursewares.get(position).setStudyTime(coursewares.get(position).getUploadTime()+""); e.printStackTrace(); } coursewares.get(position) .setUploadTime(0); ((CeiApplication) (activity .getApplication())).dataHelper .updatePlayRecord(coursewares .get(position)); try{ coursewares.add(0, coursewares.remove(position)); ((PlayRecordCourseActivity)activity).courses.add(0,((PlayRecordCourseActivity)activity).courses.remove(position)); ((PlayRecordCourseActivity)activity).currentCoursewares.add(0,((PlayRecordCourseActivity)activity).currentCoursewares.remove(position)); }catch(Exception e){ } PhoneStudyRecordAdapter.this .notifyDataSetChanged(); AlertDialog.Builder builder = new Builder( activity); builder.setMessage("上传学习记录成功 !"); builder.setPositiveButton( "确认", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); } }); } } }).start(); } } catch (Exception e) { new Thread(new Runnable() { @Override public void run() { if (!XmlUtil .parseReturnCode( Service.saveUserClassTime( ((CeiApplication) (activity .getApplication())).columnEntry .getUserId(), coursewares.get( position) .getClassId(), coursewares .get(position) .getUploadTime() + "")).equals( "-1")) { handler.post(new Runnable() { @Override public void run() { coursewares.get(position) .setUploadTime(0); ((CeiApplication) (activity .getApplication())).dataHelper .updatePlayRecord(coursewares .get(position)); PhoneStudyRecordAdapter.this .notifyDataSetChanged(); AlertDialog.Builder builder = new Builder( activity); builder.setMessage("上传学习记录成功 !"); builder.setPositiveButton( "确认", new DialogInterface.OnClickListener() { @Override public void onClick( DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); } }); } } }).start(); e.printStackTrace(); } } }); holder.courseIcon.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(activity, CourseDetailActivity.class); coursewares.get(position).setFree(true); intent.putExtra("coursewareInfo", coursewares.get(position)); intent.putExtra("isRecord",true); activity.startActivity(intent); } }); holder.downloadBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { downloadThisCourse(coursewares.get(position)); } }); changeDownBtn(holder.downloadBtn, coursewares.get(position) .getClassId()); if (coursewares.size() != 0) { String imageUrl = coursewares.get(position).getSmallPath(); holder.courseIcon.setTag(imageUrl); if (drawables.containsKey(coursewares.get(position).getClassId()) && drawables.get(coursewares.get(position).getClassId()) != null) { holder.courseIcon.setImageDrawable(drawables.get(coursewares .get(position).getClassId())); } else { bmpManager.loadBitmap(imageUrl,holder.courseIcon,coursewares .get(position).getClassId()); } } return convertView; } class ViewHolder { ImageView courseIcon; ImageView downloadBtn; ImageView coursePlayBtn; ImageView addCourse; TextView alStudyTime; TextView studyStatus; TextView totalTime; TextView tv1; TextView tv2; TextView tv3; } private void downloadThisCourse(final Courseware courseware) { alertIsSurePop(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub popWin.dismiss(); DataHelper dataHelper = ((CeiApplication) (activity .getApplication())).dataHelper; Preload preload = new Preload(); preload.setLoadPlayId(courseware.getClassId()); preload.setLoadCurrentByte(0); preload.setLoading(1); preload.setLoadFinish(0); preload.setLoadUrl(courseware.getDownPath()); if (courseware.getDownPath() != null) preload.setLoadLocalPath(MyTools.RESOURCE_PATH + MyTools.KJ_PARTPATH + courseware .getDownPath() .substring( courseware .getDownPath() .lastIndexOf( "/", (courseware .getDownPath() .length() - 10)) + 1, courseware.getDownPath() .lastIndexOf("/")) + ".zip"); preload.setLoadPlayTitle(courseware.getFullName()); preload.setLoadPlayTitleBelow("讲师姓名 : " + courseware.getTeacherName() + " 发布时间 : " + courseware.getProTime()); preload.setPassKey(courseware.getKey()); preload.setClassLength(courseware.getClassLength()); if (!dataHelper.hasPreload(preload.getLoadPlayId())) { dataHelper.savePreload(preload); AlertDialog.Builder builder = new Builder(activity); builder.setMessage("成功加入下载队列 !"); builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); Intent intent = new Intent(activity, PreloadActivity.class); activity.startActivity(intent); } }); builder.create().show(); } else { AlertDialog.Builder builder = new Builder(activity); builder.setMessage("下载队列已存在该剧集 !"); builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); Intent intent = new Intent(activity, PreloadActivity.class); activity.startActivity(intent); } }); builder.create().show(); } } }); } private PopupWindow popWin; private void alertIsSurePop(OnClickListener clickListener) { View popView = activity.getLayoutInflater().inflate( R.layout.phone_study_issure, null); popView.findViewById(R.id.phone_study_issure_sure_btn) .setOnClickListener(clickListener); popView.findViewById(R.id.phone_study_issure_cancel_btn) .setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { popWin.dismiss(); } }); popWin = new PopupWindow(popView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); popWin.setFocusable(true); popWin.showAtLocation(activity.findViewById(R.id.full_view), Gravity.CENTER, 0, 0); } private void changeDownBtn(View view, String classId) { DataHelper dataHelper = ((CeiApplication) (activity.getApplication())).dataHelper; ImageView downBtn = (ImageView) view; Preload preload = dataHelper.getPreload(classId); if (preload != null && preload.getLoadFinish() == 1) { downBtn.setOnClickListener(null); downBtn.setImageResource(R.drawable.phone_study_nodown_btn); } } }