package com.hyrt.cei.ui.ebook; import java.util.ArrayList; import java.util.List; import com.hyrt.cei.R; import com.hyrt.cei.adapter.GoodReportAdapter; import com.hyrt.cei.adapter.TreeViewAdapter; import com.hyrt.cei.application.CeiApplication; import com.hyrt.cei.db.DataHelper; import com.hyrt.cei.dzb.ui.HomePageDZB; import com.hyrt.cei.vo.ReportpaitElement; 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.webservice.service.Service; import android.app.Activity; 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.ImageButton; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class PartitionReportActivity extends BaseActivity implements OnClickListener { public static List<TextView> friFenL = new ArrayList<TextView>(), secFenL = new ArrayList<TextView>(), thrFenL = new ArrayList<TextView>(); private ImageView homePage, homeReport, goodsView, sortView, partView, mianfeiReport, findReport; private StringBuilder colIDs; private ImageButton back, bookSelf; private ListView rightList; private ListView leftList; private List<Report> rightDate; private List<ReportpaitElement> leftData, allData; private ColumnEntry columnEntry; private TreeViewAdapter treeViewAdapter; private GoodReportAdapter adapter; private DataHelper dataHelper; private int pageIndex = 1, index = 1;; private TextView more; private String nowId; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1) { addExpLeftData(); leftList.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { for (TextView textView : thrFenL) { textView.setTextColor(Color.WHITE); } TextView view = (TextView) arg1.findViewById(R.id.text); view.setTextColor(Color.BLACK); thrFenL.add(view); pageIndex = 1; more.setVisibility(View.VISIBLE); if (!leftData.get(arg2).isMhasChild()) { // 到达最低层。请求服务端数据 ReportpaitElement element = (ReportpaitElement) arg0 .getAdapter().getItem(arg2); nowId = element.getId(); new Thread() { @Override public void run() { if (((CeiApplication) getApplication()) .isNet()) { String reportData = Service .queryAllClassTypeReport(nowId, pageIndex + ""); try { rightDate = XmlUtil .parseReport(reportData); // 保存数据库 for (Report report : rightDate) { report.setPartitiontID(nowId); dataHelper .saveAllReport(report); } handler.sendEmptyMessage(2); } catch (Exception e) { MyTools.showPushXml( getApplicationContext()); e.printStackTrace(); } } else { rightDate.clear(); rightDate.addAll(dataHelper .getAllReportListByID(nowId)); handler.sendEmptyMessage(2); } } }.start(); return; } if (leftData.get(arg2).isExpanded()) { leftData.get(arg2).setExpanded(false); ReportpaitElement Element = leftData.get(arg2); ArrayList<ReportpaitElement> temp = new ArrayList<ReportpaitElement>(); for (int i = arg2 + 1; i < leftData.size(); i++) { if (Element.getLevel() >= leftData.get(i) .getLevel()) { break; } temp.add(leftData.get(i)); } leftData.removeAll(temp); treeViewAdapter = new TreeViewAdapter( PartitionReportActivity.this, leftData, -1); leftList.setAdapter(treeViewAdapter); } else { leftData.get(arg2).setExpanded(true); int level = leftData.get(arg2).getLevel(); int nextLevel = level + 1; for (ReportpaitElement reportElement : allData) { int j = 1; if (reportElement.getParent().equals( leftData.get(arg2).getId())) { reportElement.setLevel(nextLevel); reportElement.setExpanded(false); leftData.add(arg2 + j, reportElement); j++; } } treeViewAdapter = new TreeViewAdapter( PartitionReportActivity.this, leftData, -1); leftList.setAdapter(treeViewAdapter); } } }); } else if (msg.what == 2) { adapter = new GoodReportAdapter(PartitionReportActivity.this, rightDate, rightList); if(rightDate.size()<20) more.setVisibility(View.GONE); rightList.setAdapter(adapter); } else if (msg.what == 404) { //Toast.makeText(PartitionReportActivity.this, "分类下没有数据!", 2).show(); MyTools.exitShow(PartitionReportActivity.this,PartitionReportActivity.this. getWindow().getDecorView(), "分类下没有数据!"); }else if (msg.what == 3) { if (msg.arg1 < 20) { more.setVisibility(View.GONE); } if (adapter != null) adapter.notifyDataSetChanged(); }else if (msg.what == 4) { more.setVisibility(View.GONE); } } }; protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); homePage = null; homeReport = null; goodsView = null; sortView = null; partView = null; mianfeiReport = null; findReport = null; bookSelf = null; back = null; handler = null; rightList = null; leftList = null; rightDate = null; leftData = null; allData = null; treeViewAdapter = null; adapter = null; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.yjbg_fenlei); columnEntry = ((CeiApplication) getApplication()).columnEntry; dataHelper = ((CeiApplication) getApplication()).dataHelper; initView(); initData(); } private void initData() { leftData = new ArrayList<ReportpaitElement>(); rightDate = new ArrayList<Report>(); colIDs = new StringBuilder(); ColumnEntry allColBg = columnEntry.getColByName(((CeiApplication) getApplication()).nowStart); 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) { handler.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); leftData.add(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 (handler != null) { handler.sendMessage(msg); } } catch (Exception e) { MyTools.showPushXml(getApplicationContext()); e.printStackTrace(); } } }.start(); } private void initView() { TextView title=(TextView)(findViewById(R.id.top).findViewById(R.id.title)); title.setText("分类报告"); more = (TextView) findViewById(R.id.more); more.setOnClickListener(this); // homePage = (ImageView) findViewById(R.id.iv_fenlei_report_page_home); // homePage.setOnClickListener(this); // homeReport = (ImageView) findViewById(R.id.iv_fenlei_report_home); // homeReport.setOnClickListener(this); // goodsView = (ImageView) findViewById(R.id.iv_fenlei_report_goods); // goodsView.setOnClickListener(this); // sortView = (ImageView) findViewById(R.id.iv_fenlei_report_sort); // sortView.setOnClickListener(this); // partView = (ImageView) findViewById(R.id.iv_fenlei_report_partition); // partView.setOnClickListener(this); // mianfeiReport = (ImageView) findViewById(R.id.iv_fenlei_report_miamfei); // mianfeiReport.setOnClickListener(this); // findReport = (ImageView) findViewById(R.id.iv_fenlei_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); leftList = (ListView) findViewById(R.id.yjbg_feilei_list_left); rightList = (ListView) findViewById(R.id.yjbg_feilei_list_right); } @Override public void onClick(View v) { // if(ReadReportActivity.activitys!=null){ if (v == homeReport) { // 阅读报告页 Intent intent = new Intent(this, ReadReportActivity.class); startActivity(intent); // saveActivity(ReadReportActivity.class); } 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); */ return; } 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); // ReadReportActivity.activitys.clear(); } else if (v == more) { // new Thread() { @Override public void run() { pageIndex++; if (((CeiApplication) getApplication()).isNet()) { String reportData = Service.queryAllClassTypeReport( nowId, pageIndex + ""); try { List<Report> reports = XmlUtil .parseReport(reportData); if(reports.size()==0){ handler.sendEmptyMessage(4); return; } rightDate.addAll(reports); // 保存数据库 for (Report report : rightDate) { report.setPartitiontID(nowId); dataHelper.saveAllReport(report); } Message msg = new Message(); msg.what = 3; msg.arg1 = reports.size(); handler.sendMessage(msg); } catch (Exception e) { MyTools.showPushXml(getApplicationContext()); e.printStackTrace(); } } } }.start(); } else if (v == bookSelf) { // 右侧数据图片 Intent intent = new Intent(this, CeiShelfBookActivity.class); startActivity(intent); // saveActivity(CeiShelfBookActivity.class); } } private void addExpLeftData() { for (int i = 0; i < 2; i++) { if (leftData.size() > 0 && leftData.get(i).isMhasChild() && !leftData.get(i).isExpanded()) { leftData.get(i).setExpanded(true); int level = leftData.get(i).getLevel(); int nextLevel = level + 1; for (ReportpaitElement reportElement : allData) { int j = 1; if (reportElement.getParent().equals( leftData.get(i).getId())) { reportElement.setLevel(nextLevel); reportElement.setExpanded(false); leftData.add(i + j, reportElement); j++; } } } } if (leftData.get(1).isMhasChild()) { nowId = leftData.get(2).getId(); index = 2; } else { nowId = leftData.get(1).getId(); } treeViewAdapter = new TreeViewAdapter(PartitionReportActivity.this, leftData, index); leftList.setAdapter(treeViewAdapter); new Thread() { @Override public void run() { if (((CeiApplication) getApplication()).isNet()) { String reportData = Service.queryAllClassTypeReport(nowId, pageIndex + ""); try { rightDate = XmlUtil.parseReport(reportData); // 保存数据库 for (Report report : rightDate) { report.setPartitiontID(nowId); dataHelper.saveAllReport(report); } Message msg = new Message(); msg.arg1 = index; msg.what = 2; handler.sendMessage(msg); } catch (Exception e) { MyTools.showPushXml(getApplicationContext()); e.printStackTrace(); } } } }.start(); } @Override protected void onRestart() { if (adapter != null) adapter.notifyDataSetChanged(); super.onRestart(); } }