package com.hyrt.cei.ui.ebook; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.hyrt.cei.R; import com.hyrt.cei.adapter.ReportAdapter1; import com.hyrt.cei.application.CeiApplication; import com.hyrt.cei.dzb.ui.HomePageDZB; import com.hyrt.cei.ui.ebook.view.CustomScrollView; import com.hyrt.cei.ui.ebook.view.CustomScrollView.OnLoadListener; import com.hyrt.cei.ui.ebook.view.CustomScrollView.OnRefreshListener; import com.hyrt.cei.ui.phonestudy.HomePageActivity; import com.hyrt.cei.ui.phonestudy.view.FlowRelativeyout; import com.hyrt.cei.util.AsyncImageLoader; import com.hyrt.cei.util.MyTools; import com.hyrt.cei.util.TimeOutHelper; import com.hyrt.cei.util.WriteOrRead; import com.hyrt.cei.util.XmlUtil; import com.hyrt.cei.vo.ColumnEntry; import com.hyrt.cei.vo.ImageResourse; import com.hyrt.cei.vo.Report; import com.hyrt.cei.webservice.service.Service; import android.app.Activity; import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.GridView; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TextView; import android.widget.Toast; public class ReadReportActivity extends BaseActivity implements OnClickListener, OnItemClickListener { // public static List<Class> activitys; public static boolean bbStart; public static String MODEL_NAME; // 研究报告的子集业务集合 public static ColumnEntry allColBg; private String jcBgId; private TimeOutHelper timeOutHelper; private int pageIndex = 1; private ImageView homePage, homeReport, goodsView, sortView, partView, mianfeiReport, findReport; private GridView book_gv; private ImageButton bookSelf, back; private ColumnEntry columnEntry; private CeiApplication application; private List<Report> goodReportData, reportData; private ReportAdapter1 newAdapter; private Button moreReport; // 精彩3D报告的父级元素,用于3D效果的一些操作 private FlowRelativeyout flowLayout; // 用户加载图片的工具类 private AsyncImageLoader asyncImageLoader; // 记录最热报告图片下载数量 private int x = 0; private StringBuilder colIDs = null; private LinearLayout prolayout; private CustomScrollView scrollView = null; Map<Drawable, String> drawToPath = new HashMap<Drawable, String>(); private Handler viewHandler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.arg1 == HomePageActivity.GO_DETAIL && flowLayout.getLinkList().get(1) < goodReportData.size()) { Report report = null; for (int i = 0; i < goodReportData.size(); i++) { if (x < 6) { return; } if (goodReportData.get(i).getPpath() .equals(drawToPath.get(flowLayout.currentDrawable))) { report = goodReportData.get(i); } } Intent intent = new Intent(ReadReportActivity.this, ReportIntro.class);// OpenBookActivity intent.putExtra("report", report); startActivity(intent); } else if (msg.arg1 == 12) { /* * newAdapter = new ReportAdapter1(ReadReportActivity.this, * book_gv, reportData); book_gv.setAdapter(newAdapter); * book_gv.setOnItemClickListener(ReadReportActivity.this); */ if (msg.arg2 < 20 || reportData.size() >= 40) { moreReport.setVisibility(View.GONE); scrollView.setOnLoadListener(null); } if (newAdapter != null) newAdapter.notifyDataSetChanged(); } else { // 为3D控件注册事件 flowLayout.registEventForFlowRelativeyout(viewHandler); final Drawable[] drawables = new Drawable[6]; x = 0; for (int i = 0; i < goodReportData.size() && i<6; i++) { final String imageUrl = goodReportData.get(i).getPpath(); ImageResourse imageResource = new ImageResourse(); imageResource.setIconUrl(imageUrl); imageResource.setIconId(goodReportData.get(i).getId()); imageResource.setType("1"); asyncImageLoader.loadDrawable(imageResource, new AsyncImageLoader.ImageCallback() { @Override public void imageLoaded(Drawable drawable, String path) { if (drawable != null && x <= 5) { drawables[x] = drawable; x++; drawToPath.put(drawable, path); // 如果图片都加载好了的话,就为图片增加事件 if (x == 6) { flowLayout.loadImgForIv(drawables); } } } }); } newAdapter = new ReportAdapter1(ReadReportActivity.this, book_gv, reportData); if (reportData.size() < 20) { moreReport.setVisibility(View.GONE); } book_gv.setAdapter(newAdapter); book_gv.setOnItemClickListener(ReadReportActivity.this); prolayout.setVisibility(View.GONE); // scrollView=()findViewById(R.id.phone_study_scrollview); scrollView.smoothScrollTo(0, 0); } } }; @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if (flowLayout != null) flowLayout.clearBitmaps(); if (newAdapter != null) newAdapter.clearBitmaps(); homePage = null; homeReport = null; goodsView = null; sortView = null; partView = null; mianfeiReport = null; findReport = null; book_gv = null; bookSelf = null; back = null; columnEntry = null; goodReportData = null; reportData = null; viewHandler = null; newAdapter = null; } @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.yjbg_main); MODEL_NAME = ((CeiApplication) getApplication()).nowStart;// 获取当前业务名称。 timeOutHelper = new TimeOutHelper(this); // overridePendingTransition(R.anim.push_in, R.anim.push_out); // activitys = new ArrayList<Class>(); // activitys.add(ReadReportActivity.class); application = (CeiApplication) getApplication(); columnEntry = ((CeiApplication) getApplication()).columnEntry; if(columnEntry.getColumnEntryChilds().size()>0){ bbStart=columnEntry.getColumnEntryChilds().get(0).getName().equals("通用版")?true:false; } asyncImageLoader = ((CeiApplication) (getApplication())).asyncImageLoader; flowLayout = (FlowRelativeyout) findViewById(R.id.phone_study_top_ivparent); flowLayout.indexParent = (LinearLayout) findViewById(R.id.phone_study_indexParent); flowLayout.indexParent.getChildAt(0).setSelected(true); flowLayout.leftOperationIv = (ImageView) findViewById(R.id.phone_study_leftoperation); flowLayout.rightOperationIv = (ImageView) findViewById(R.id.phone_study_rightoperation); flowLayout.centerImageView = (ImageView) findViewById(R.id.phone_study_top_3); flowLayout.leftOneImageView = (ImageView) findViewById(R.id.phone_study_top_2); flowLayout.leftTwoImageView = (ImageView) findViewById(R.id.phone_study_top_1); flowLayout.rightOneImageView = (ImageView) findViewById(R.id.phone_study_top_4); flowLayout.rightTwoImageView = (ImageView) findViewById(R.id.phone_study_top_5); flowLayout.scrollview = (ScrollView) findViewById(R.id.phone_study_scrollview); initView(); initData(); } private void initData() { // 更据业务ID查询业务里面的数据 allColBg = columnEntry.getColByName(MODEL_NAME); if (allColBg != null && allColBg.getId() != null && !allColBg.getId().equals("")) { String allBgId = allColBg.getId(); colIDs = new StringBuilder(); List<ColumnEntry> allCol = columnEntry .getEntryChildsForParent(allBgId); for (ColumnEntry columnEntry : allCol) { if (columnEntry.getName().equals("置顶报告")) { jcBgId = columnEntry.getId(); } colIDs.append(columnEntry.getId() + ","); } } new Thread() { @Override public void run() { timeOutHelper.installTimerTask(); if (jcBgId != null && !jcBgId.equals("")) { try { if (((CeiApplication) (getApplication())).isNet()) { String retData = Service.queryReport(jcBgId, "bg", "1"); goodReportData = new ArrayList<Report>(); goodReportData.addAll(XmlUtil.parseReport(retData)); String newRetData = Service.queryNewReport( colIDs.toString().substring(0, colIDs.toString().length() - 1), pageIndex + ""); Log.i("sys", newRetData.length() + ""); reportData = XmlUtil.parseReport(newRetData); // 本地缓存 WriteOrRead.write(retData, MyTools.nativeData, "goodReport.xml"); WriteOrRead.write(newRetData, MyTools.nativeData, "newReport.xml"); String buyReport = Service .queryBuyReport(columnEntry.getUserId()); WriteOrRead.write(buyReport, MyTools.nativeData, "buyReport.xml"); application.buyReportData.clear(); application.buyReportData.addAll(XmlUtil .queryBuyReports(buyReport));// 此处缺解析方法 } else { String gooddata = WriteOrRead.read( MyTools.nativeData, "goodReport.xml"); String newsdata = WriteOrRead.read( MyTools.nativeData, "newReport.xml"); String buydata = WriteOrRead.read( MyTools.nativeData, "buyReport.xml"); goodReportData = XmlUtil.parseReport(gooddata); reportData = XmlUtil.parseReport(newsdata); application.buyReportData.clear(); application.buyReportData.addAll(XmlUtil .queryBuyNews(buydata)); } if (viewHandler != null) { viewHandler.sendEmptyMessage(1); } timeOutHelper .uninstallTimerTask(TimeOutHelper.ALDATA_FLAG); } catch (Exception e) { MyTools.showPushXml(getApplicationContext()); timeOutHelper .uninstallTimerTask(TimeOutHelper.ALDATA_FLAG); e.printStackTrace(); } } } }.start(); } private void initView() { TextView title=(TextView)(findViewById(R.id.top).findViewById(R.id.title)); title.setText(MODEL_NAME); prolayout = (LinearLayout) findViewById(R.id.yjbg_read_pro); moreReport = (Button) findViewById(R.id.yjbg_more_report); moreReport.setOnClickListener(this); book_gv = (GridView) findViewById(R.id.yjbg_gv_book); // homePage = (ImageView) findViewById(R.id.iv_report_page_home); // homePage.setOnClickListener(this); // homeReport = (ImageView) findViewById(R.id.iv_report_home); // homeReport.setOnClickListener(this); // goodsView = (ImageView) findViewById(R.id.iv_report_goods); // goodsView.setOnClickListener(this); // sortView = (ImageView) findViewById(R.id.iv_report_sort); // sortView.setOnClickListener(this); // partView = (ImageView) findViewById(R.id.iv_report_partition); // partView.setOnClickListener(this); // mianfeiReport = (ImageView) findViewById(R.id.iv_report_miamfei); // mianfeiReport.setOnClickListener(this); // findReport = (ImageView) findViewById(R.id.iv_report_find); // findReport.setOnClickListener(this); bookSelf = (ImageButton) (findViewById(R.id.top).findViewById(R.id.ib_bg_bookshelf)); bookSelf.setOnClickListener(this); back = (ImageButton) (findViewById(R.id.top).findViewById(R.id.ib_bg_back)); back.setOnClickListener(this); scrollView = (CustomScrollView) findViewById(R.id.phone_study_scrollview); scrollView.setOnRefreshListener(new OnRefreshListener() { public void onRefresh() { new AsyncTask<Void, Void, Void>() { protected Void doInBackground(Void... params) { try { // Thread.sleep(1500); ReadReportActivity.this.finish(); startActivity(new Intent(ReadReportActivity.this, ReadReportActivity.class)); Log.i("scl", "setOnRefreshListener"); } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { scrollView.onRefreshComplete(); } }.execute(); } }); // 到底加载更多 scrollView.setOnLoadListener(new OnLoadListener() { public void onLoad() { new AsyncTask<Void, Void, Void>() { protected Void doInBackground(Void... params) { try { // Thread.sleep(3000); Log.i("scl", "setOnLoadListener"); // 加载更多 if (colIDs != null) { try { pageIndex++; String newRetData = Service .queryNewReport( colIDs.toString() .substring( 0, colIDs.toString() .length() - 1), pageIndex + ""); // reportData.clear(); reportData.addAll(XmlUtil .parseReport(newRetData)); Message msg = new Message(); msg.arg1 = 12; msg.arg2 = XmlUtil.parseReport(newRetData) .size(); viewHandler.sendMessage(msg); } catch (Exception e) { MyTools.showPushXml(getApplicationContext()); e.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { scrollView.onLoadComplete(); } }.execute(); } }); } @Override public void onClick(View v) { if (v == homeReport) { // 阅读报告页 /* * Intent intent = new Intent(this, ReadReportActivity.class); * startActivity(intent); saveActivity(ReadReportActivity.class); */ return; } else if (v == goodsView) { Intent intent = new Intent(this, GoodsReportActivity.class); startActivity(intent); // saveActivity(GoodsReportActivity.class); // 精彩报告页 } else if (v == sortView) { // 排序报告页 Intent intent = new Intent(this, SortReportActivity.class); startActivity(intent); // saveActivity(SortReportActivity.class); } else if (v == partView) { // 分类报告页 Intent intent = new Intent(this, PartitionReportActivity.class); startActivity(intent); // saveActivity(PartitionReportActivity.class); } else if (v == mianfeiReport) { // 免费报告 Intent intent = new Intent(this, MianfeiReportActivity.class); startActivity(intent); // saveActivity(MianfeiReportActivity.class); } else if (v == findReport) { // 报告查询查询 Intent intent = new Intent(this, FindReportActivity.class); startActivity(intent); // saveActivity(FindReportActivity.class); } else if (v == homePage) { // 首页 Intent intent = new Intent(this, HomePageDZB.class); startActivity(intent); // activitys.clear(); } else if (v == back) { // 返回键 /* * if (activitys.size() > 1) { * activitys.remove(activitys.get(activitys.size() - 1)); Intent * intent = new Intent(this, activitys.get(activitys.size() - 1)); * startActivity(intent); } */ } else if (v == bookSelf) { // 书架 // this.finish(); Intent intent = new Intent(this, CeiShelfBookActivity.class); startActivity(intent); // saveActivity(CeiShelfBookActivity.class); // activitys.clear(); return; } else if (v == moreReport) { // 加载更多 if (colIDs != null) { try { pageIndex++; String newRetData = Service.queryNewReport( colIDs.toString().substring(0, colIDs.toString().length() - 1), pageIndex + ""); // reportData.clear(); reportData.addAll(XmlUtil.parseReport(newRetData)); Message msg = new Message(); msg.arg1 = 12; msg.arg2 = XmlUtil.parseReport(newRetData).size(); viewHandler.sendMessage(msg); return; } catch (Exception e) { MyTools.showPushXml(getApplicationContext()); e.printStackTrace(); } } return; } // this.finish(); } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Report report = (Report) arg0.getAdapter().getItem(arg2); Intent intent = new Intent(this, ReportIntro.class);// OpenBookActivity intent.putExtra("report", report); startActivity(intent); } /* * private void saveActivity(Class<?> clas) { if (activitys.contains(clas)) * { activitys.remove(clas); activitys.add(clas); } else { * activitys.add(clas); } } */ }