package com.hyrt.readreport; import java.util.ArrayList; import java.util.List; import com.hyrt.cei.adapter.FlTableAdapter; import com.hyrt.cei.adapter.ReadReportAdapter; import com.hyrt.cei.application.CeiApplication; import com.hyrt.cei.db.DataHelper; import com.hyrt.cei.ui.common.LoginActivity; import com.hyrt.cei.util.MyTools; import com.hyrt.cei.util.ReportpaitUtil; import com.hyrt.cei.util.WriteOrRead; import com.hyrt.cei.util.XmlUtil; import com.hyrt.cei.vo.ColumnEntry; import com.hyrt.cei.vo.Report; import com.hyrt.cei.vo.ReportpaitElement; import com.hyrt.cei.webservice.service.Service; import com.hyrt.ceiphone.ContainerActivity; import com.hyrt.ceiphone.R; import com.hyrt.ceiphone.common.HomePageDZB; import com.hyrt.readreport.view.GGridView; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.HorizontalScrollView; import android.widget.ImageView; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; public class ReadReportFL extends ContainerActivity implements OnClickListener { private ColumnEntry columnEntry; private ImageView goodImg, paihangImg, fenleiImg, mianfeiImg, homeImg, findImg, bookself; private ListView flList; private GGridView flGridView1, flGridView2; private HorizontalScrollView flTable; private List<Report> findData; private StringBuilder colIDs = null; private List<ReportpaitElement> firstData, secondData, allData; private ReportpaitElement rootElement; private DataHelper dataHelper; private ReadReportAdapter adapter; private int pageindex = 1; private String nowId; private TextView moreText, iconImg, backImg; private Handler findHandler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 2) { // 已达最低层 adapter = new ReadReportAdapter(ReadReportFL.this, findData, flList); flList.setAdapter(adapter); if (findData.size() < 20) moreText.setVisibility(View.GONE); } else if (msg.what == 404) { // Toast.makeText(ReadReportFL.this, "分类下没有数据!", 2).show(); MyTools.exitShow(ReadReportFL.this, ReadReportFL.this .getWindow().getDecorView(), "分类下没有数据!"); } else if (msg.what == 3) { if (msg.arg1 < 20) { moreText.setVisibility(View.GONE); } if (adapter != null) adapter.notifyDataSetChanged(); } else { click(rootElement, 1); if (firstData.size() > 0) { click(firstData.get(0), 2); if (secondData.size() > 0) { // 加载默认数据 nowId = secondData.get(0).getId(); if (((CeiApplication) getApplication()).isNet()) { String reportData = Service .queryAllClassTypeReport(nowId, pageindex + ""); try { findData = XmlUtil.parseReport(reportData); // 保存数据库 for (Report report : findData) { report.setPartitiontID(nowId); dataHelper.saveAllReport(report); } findHandler.sendEmptyMessage(2); } catch (Exception e) { MyTools.showPushXml(getApplicationContext()); e.printStackTrace(); } } } else if (!firstData.get(0).isMhasChild()) { nowId = firstData.get(0).getId(); if (((CeiApplication) getApplication()).isNet()) { String reportData = Service .queryAllClassTypeReport(nowId, pageindex + ""); try { findData = XmlUtil.parseReport(reportData); // 保存数据库 for (Report report : findData) { report.setPartitiontID(nowId); dataHelper.saveAllReport(report); } findHandler.sendEmptyMessage(2); } catch (Exception e) { MyTools.showPushXml(getApplicationContext()); e.printStackTrace(); } } } } FlTableAdapter adapter = new FlTableAdapter(ReadReportFL.this, firstData, 0); FlTableAdapter adapter1 = new FlTableAdapter(ReadReportFL.this, secondData, 0); flGridView1.setAdapter(adapter); flGridView2.setAdapter(adapter1); flGridView1.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // findData.clear(); // 换点击item背景 for (int i = 0; i < arg0.getChildCount(); i++) { RelativeLayout rl = (RelativeLayout) arg0 .getChildAt(i); if (i == arg2) { ((ImageView) (rl.getChildAt(0))) .setImageResource(R.drawable.phone_study_menu_select); ((TextView) rl.getChildAt(1)) .setTextColor(Color.WHITE); } else { ((ImageView) (rl.getChildAt(0))) .setImageResource(R.drawable.menu_transbg); ((TextView) rl.getChildAt(1)) .setTextColor(Color.BLUE); } } // 第二层的数据集合 ReportpaitElement element = (ReportpaitElement) arg0 .getAdapter().getItem(arg2); click(element, 2); if (secondData != null) {// // 加载下一层数据 /* * findViewById(R.id.read_report_fltable1).setVisibility * (View.VISIBLE); * flGridView2.setVisibility(View.VISIBLE); */ FlTableAdapter adapter = new FlTableAdapter( ReadReportFL.this, secondData, -1); flGridView2.setAdapter(adapter); } } }); flGridView2.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { findData.clear(); // 换点击item背景 for (int i = 0; i < arg0.getChildCount(); i++) { RelativeLayout rl = (RelativeLayout) arg0 .getChildAt(i); if (i == arg2) { ((ImageView) (rl.getChildAt(0))) .setImageResource(R.drawable.phone_study_menu_select); ((TextView) rl.getChildAt(1)) .setTextColor(Color.WHITE); } else { ((ImageView) (rl.getChildAt(0))) .setImageResource(R.drawable.menu_transbg); ((TextView) rl.getChildAt(1)) .setTextColor(Color.BLUE); } } ReportpaitElement element = (ReportpaitElement) arg0 .getAdapter().getItem(arg2); click(element, 3); } }); } } }; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.read_report_find); columnEntry = ((CeiApplication) getApplication()).columnEntry; dataHelper = ((CeiApplication) getApplication()).dataHelper; initView(); // imgLight(); initData(); } private void initView() { flList = (ListView) findViewById(R.id.read_report_data_lv); flTable = (HorizontalScrollView) findViewById(R.id.read_report_fltable); flTable.setVisibility(View.VISIBLE); flGridView1 = (GGridView) findViewById(R.id.read_report_fl_gv); flGridView2 = (GGridView) findViewById(R.id.read_report_fl_gv2); // goodImg = (ImageView) findViewById(R.id.read_report_jp); // goodImg.setOnClickListener(this); // paihangImg = (ImageView) findViewById(R.id.read_report_ph); // paihangImg.setOnClickListener(this); // fenleiImg = (ImageView) findViewById(R.id.read_report_fl); // fenleiImg.setOnClickListener(this); // mianfeiImg = (ImageView) findViewById(R.id.read_report_mf); // mianfeiImg.setOnClickListener(this); /* * homeImg = (ImageView) findViewById(R.id.read_report_home); * homeImg.setOnClickListener(this); */ iconImg = (TextView) findViewById(R.id.read_report_topicon); iconImg.setText("报告分类"); bookself = (ImageView) findViewById(R.id.ib_findbg_bookshelf); bookself.setOnClickListener(this); // findImg = (ImageView) findViewById(R.id.read_report_find); // findImg.setOnClickListener(this); moreText = (TextView) findViewById(R.id.read_report_more); moreText.setOnClickListener(this); backImg = (TextView) findViewById(R.id.ib_findbg_back); backImg.setOnClickListener(this); } private void initData() { firstData = new ArrayList<ReportpaitElement>(); secondData = new ArrayList<ReportpaitElement>(); findData = new ArrayList<Report>(); colIDs = new StringBuilder(); ColumnEntry allColBg = columnEntry .getColByName(ReadReportMainActivity.MODEL_NAME); if (allColBg != null) { String allBgId = allColBg.getId(); if (allBgId != null) { List<ColumnEntry> allCol = columnEntry .getEntryChildsForParent(allBgId); for (ColumnEntry columnEntry : allCol) { String forId = columnEntry.getId(); if (this.columnEntry.getEntryChildsForParent(forId).size() != 0 && this.columnEntry.getEntryChildsForParent(forId) != null) { List<ColumnEntry> childCols = this.columnEntry .getEntryChildsForParent(forId); for (ColumnEntry columnEntry2 : childCols) { colIDs.append(columnEntry2.getId() + ","); } } else { colIDs.append(forId + ","); } } } } new Thread() { @Override public void run() { String retCord = ""; if (((CeiApplication) getApplication()).isNet()) { // 获取报告分类类表 retCord = Service.queryReportPartition(colIDs.toString()); WriteOrRead.write(retCord, MyTools.nativeData, "portAll"); } else { retCord = WriteOrRead.read(MyTools.nativeData, "portAll"); } // 解析 try { allData = XmlUtil.parseReportPart(retCord); if (allData == null || allData.size() == 0) { findHandler.sendEmptyMessage(404); return; } for (ReportpaitElement reportpaitElement : allData) { if (reportpaitElement.getParent() == null || reportpaitElement.getParent().equals("")) { reportpaitElement.setLevel(0); reportpaitElement.setExpanded(false); reportpaitElement.setMhasParent(false); reportpaitElement.setMhasChild(true); rootElement = reportpaitElement; } else if (!reportpaitElement.getParent().equals("") && ReportpaitUtil.getChild(allData, reportpaitElement.getId())) { reportpaitElement.setLevel(1); reportpaitElement.setExpanded(false); reportpaitElement.setMhasParent(true); reportpaitElement.setMhasChild(true); } else if (!reportpaitElement.getParent().equals("") && !ReportpaitUtil.getChild(allData, reportpaitElement.getId())) { reportpaitElement.setLevel(2); reportpaitElement.setExpanded(false); reportpaitElement.setMhasParent(true); reportpaitElement.setMhasChild(false); } } Message msg = new Message(); msg.what = 1; if (findHandler != null) { findHandler.sendMessage(msg); } } catch (Exception e) { MyTools.showPushXml(getApplicationContext()); e.printStackTrace(); } } }.start(); } @Override public void onClick(View v) { Intent intent = null; switch (v.getId()) { case R.id.read_report_jp: intent = new Intent(this, ReadReportGoodActivity.class); startActivity(intent); break; case R.id.read_report_ph: intent = new Intent(this, ReadReportPH.class); startActivity(intent); break; case R.id.read_report_fl: break; case R.id.read_report_mf: intent = new Intent(this, ReadReportMF.class); startActivity(intent); break; case R.id.read_report_more: pageindex++; if (((CeiApplication) getApplication()).isNet()) { String reportData = Service.queryAllClassTypeReport(nowId, pageindex + ""); try { List<Report> reports = XmlUtil.parseReport(reportData); if (reports != null) { findData.addAll(reports); } // 保存数据库 for (Report report : findData) { report.setPartitiontID(nowId); dataHelper.saveAllReport(report); } Message msg = new Message(); msg.what = 3; msg.arg1 = reports.size(); findHandler.sendMessage(msg); } catch (Exception e) { MyTools.showPushXml(getApplicationContext()); e.printStackTrace(); } } break; case R.id.ib_findbg_bookshelf: intent = new Intent(this, CeiShelfBookActivity.class); startActivity(intent); break; case R.id.ib_findbg_back: intent = new Intent(this, ReadReportMainActivity.class); startActivity(intent); break; case R.id.read_report_find: intent = new Intent(this, ReadReportFind.class); startActivity(intent); break; } } private void click(ReportpaitElement element, int index) { if (!element.isMhasChild()) { // 到达最低层。请求服务端数据 pageindex = 1; moreText.setVisibility(View.VISIBLE); final String id = element.getId(); new Thread() { @Override public void run() { if (((CeiApplication) getApplication()).isNet()) { String reportData = Service.queryAllClassTypeReport(id, pageindex + ""); try { nowId = id; findData = XmlUtil.parseReport(reportData); // 保存数据库 for (Report report : findData) { report.setPartitiontID(id); dataHelper.saveAllReport(report); } findHandler.sendEmptyMessage(2); } catch (Exception e) { MyTools.showPushXml(getApplicationContext()); e.printStackTrace(); } } else { findData.clear(); findData.addAll(dataHelper.getAllReportListByID(id)); findHandler.sendEmptyMessage(2); } } }.start(); if (index == 2) { findViewById(R.id.read_report_fltable1) .setVisibility(View.GONE); } return; } if (index == 1) { for (ReportpaitElement reportElement : allData) { if (reportElement.getParent().equals(element.getId())) { firstData.add(reportElement); } } } else if (index == 2) { secondData.clear(); for (ReportpaitElement reportElement : allData) { if (reportElement.getParent().equals(element.getId())) { secondData.add(reportElement); } } if (secondData.size() > 1) { findViewById(R.id.read_report_fltable1).setVisibility( View.VISIBLE); } else { findViewById(R.id.read_report_fltable1) .setVisibility(View.GONE); } } } private void imgLight() { goodImg.setBackgroundResource(R.drawable.read_report_jp1); paihangImg.setBackgroundResource(R.drawable.read_report_ph1); fenleiImg.setBackgroundResource(R.drawable.read_report_fl); mianfeiImg.setBackgroundResource(R.drawable.read_report_mf1); // homeImg.setBackgroundResource(R.drawable.home1); findImg.setBackgroundResource(R.drawable.read_report_find1); } @Override protected void onResume() { if (adapter != null) adapter.notifyDataSetChanged(); super.onResume(); } }