package com.hyrt.ceiphone.phonestudy; import java.util.ArrayList; import java.util.List; import com.hyrt.cei.application.CeiApplication; import com.hyrt.cei.ui.phonestudy.view.MenuGridView; import com.hyrt.cei.util.XmlUtil; import com.hyrt.cei.vo.ClassType; import com.hyrt.cei.vo.ColumnEntry; import com.hyrt.cei.webservice.service.Service; import com.hyrt.ceiphone.R; import com.hyrt.ceiphone.adapter.HorGridViewAdapter; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; public class KindsActivity extends FoundationActivity{ private List<ColumnEntry> columnEntries; private List<ColumnEntry> firstColumnEntries; private List<ColumnEntry> secondColumnEntries; private MenuGridView gridView; private MenuGridView gridView1; private MenuGridView gridView2; private List<ClassType> classTypes = new ArrayList<ClassType>(); private String oldFunctionId = ""; public static final String KIND_DATA = "KIND_DATA"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.phone_study_kinds); CURRENT_KEY = KIND_DATA_KEY; initMenuData(); } private void initLvData(final String functionId) { currentFunctionId = functionId; if (oldFunctionId.equals(currentFunctionId)) return; oldFunctionId = currentFunctionId; getServiceDataByKindId(currentFunctionId); } @Override public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { switch(adapter.getId()){ case R.id.phone_study_gridview: for (int i = 0; i < adapter.getChildCount(); i++) { RelativeLayout rl = (RelativeLayout) adapter.getChildAt(i); if (i == position) { ((ImageView) rl.getChildAt(0)).setImageResource(R.drawable.phone_study_menu_select); ((TextView) rl.getChildAt(1)).setTextColor(Color.WHITE); } else { ((ImageView) rl.getChildAt(0)).setImageDrawable(null); ((TextView) rl.getChildAt(1)).setTextColor(Color.BLUE); } } firstColumnEntries = new ArrayList<ColumnEntry>(); for(int i=0;i<classTypes.size();i++){ if(classTypes.get(i).getParentId().equals(columnEntries.get(position).getId())){ ColumnEntry menuNodeChilds = new ColumnEntry(); menuNodeChilds.setId(classTypes.get(i).getClassId()); menuNodeChilds.setName(classTypes.get(i).getContent()); firstColumnEntries.add(menuNodeChilds); } } HorGridViewAdapter gridViewAdapter = new HorGridViewAdapter(KindsActivity.this,firstColumnEntries,false); gridView1.setAdapter(gridViewAdapter, 4); findViewById(R.id.phone_study_gridviewparent2).setVisibility(View.GONE); phoneStudyListView.setVisibility(View.GONE); break; case R.id.phone_study_gridview1: for (int i = 0; i < adapter.getChildCount(); i++) { RelativeLayout rl = (RelativeLayout) adapter.getChildAt(i); if (i == position) { ((ImageView) rl.getChildAt(0)).setImageResource(R.drawable.phone_study_menu_select); ((TextView) rl.getChildAt(1)).setTextColor(Color.WHITE); } else { ((ImageView) rl.getChildAt(0)).setImageDrawable(null); ((TextView) rl.getChildAt(1)).setTextColor(Color.BLUE); } } secondColumnEntries = new ArrayList<ColumnEntry>(); for(int i=0;i<classTypes.size();i++){ if(classTypes.get(i).getParentId().equals(firstColumnEntries.get(position).getId())){ ColumnEntry menuNodeChilds = new ColumnEntry(); menuNodeChilds.setId(classTypes.get(i).getClassId()); menuNodeChilds.setName(classTypes.get(i).getContent()); secondColumnEntries.add(menuNodeChilds); } } if(secondColumnEntries.size() == 0 && firstColumnEntries.size() > 0){ phoneStudyListView.setVisibility(View.VISIBLE); initLvData(firstColumnEntries.get(position).getId()); findViewById(R.id.phone_study_gridviewparent2).setVisibility(View.GONE); }else{ HorGridViewAdapter gridViewAdapter2 = new HorGridViewAdapter(KindsActivity.this,secondColumnEntries,false); gridView2.setAdapter(gridViewAdapter2, 4); findViewById(R.id.phone_study_gridviewparent2).setVisibility(View.VISIBLE); } break; case R.id.phone_study_gridview2: for (int i = 0; i < adapter.getChildCount(); i++) { RelativeLayout rl = (RelativeLayout) adapter.getChildAt(i); if (i == position) { ((ImageView) rl.getChildAt(0)).setImageResource(R.drawable.phone_study_menu_select); ((TextView) rl.getChildAt(1)).setTextColor(Color.WHITE); } else { ((ImageView) rl.getChildAt(0)).setImageDrawable(null); ((TextView) rl.getChildAt(1)).setTextColor(Color.BLUE); } } phoneStudyListView.setVisibility(View.VISIBLE); initLvData(secondColumnEntries.get(position).getId()); break; } } private void initMenuData() { final Handler handler = new Handler() { @Override public void dispatchMessage(Message msg) { if(classTypes.size() <= 0) return; columnEntries = new ArrayList<ColumnEntry>(); String rootId = classTypes.get(0).getClassId(); classTypes.remove(0); for (int i = 0; i < classTypes.size(); i++) { if (!classTypes.get(i).getParentId().equals(rootId)) continue; ColumnEntry menuNodeChilds = new ColumnEntry(); menuNodeChilds.setId(classTypes.get(i).getClassId()); menuNodeChilds.setName(classTypes.get(i).getContent()); columnEntries.add(menuNodeChilds); } HorGridViewAdapter gridViewAdapter = new HorGridViewAdapter(KindsActivity.this,columnEntries,true); gridView = (MenuGridView) findViewById(R.id.phone_study_gridview); gridView.setAdapter(gridViewAdapter, 4); gridView.setOnItemClickListener(KindsActivity.this); //加载刚进页面显示的数据 loadFirstData(); } }; //获取种类列表 new Thread(new Runnable() { @Override public void run() { if (((CeiApplication) getApplication()).isNet()) { ColumnEntry columnEntry = ((CeiApplication) (KindsActivity.this.getApplication())).columnEntry; ColumnEntry phoneStudyCol = columnEntry.getColByName(FoundationActivity.MODEL_NAME); StringBuilder functionIds = new StringBuilder(phoneStudyCol.getId()); for (int i = 0; i < columnEntry.getColumnEntryChilds().size(); i++) { ColumnEntry entryChild = columnEntry.getColumnEntryChilds().get(i); if (entryChild.getPath() != null && entryChild.getPath().contains(phoneStudyCol.getId())) { functionIds.append("," + entryChild.getId()); } } String result = Service.queryClassByType(functionIds.toString()); XmlUtil.parseClassType(result, classTypes); ((CeiApplication) (KindsActivity.this.getApplication())).dataHelper.saveClassType(classTypes); } else { classTypes = ((CeiApplication) (KindsActivity.this.getApplication())).dataHelper.getClassTypes(); } handler.sendMessage(handler.obtainMessage()); } }).start(); gridView1 = (MenuGridView) findViewById(R.id.phone_study_gridview1); gridView1.setOnItemClickListener(KindsActivity.this); gridView2 = (MenuGridView) findViewById(R.id.phone_study_gridview2); gridView2.setOnItemClickListener(KindsActivity.this); } /** * 加载第一级的数据 */ private void loadFirstData(){ findViewById(R.id.phone_study_gridviewparent1).setVisibility(View.GONE); findViewById(R.id.phone_study_gridviewparent2).setVisibility(View.GONE); if(columnEntries.size() == 0){ findViewById(R.id.phone_study_gridviewparent).setVisibility(View.GONE); return; } firstColumnEntries = new ArrayList<ColumnEntry>(); for(int i=0;i<classTypes.size();i++){ if(classTypes.get(i).getParentId().equals(columnEntries.get(0).getId())){ ColumnEntry menuNodeChilds = new ColumnEntry(); menuNodeChilds.setId(classTypes.get(i).getClassId()); menuNodeChilds.setName(classTypes.get(i).getContent()); firstColumnEntries.add(menuNodeChilds); } } HorGridViewAdapter gridViewAdapter = new HorGridViewAdapter(KindsActivity.this,firstColumnEntries,true); gridView1.setAdapter(gridViewAdapter, 4); if(firstColumnEntries.size() != 0) findViewById(R.id.phone_study_gridviewparent1).setVisibility(View.VISIBLE); secondColumnEntries = new ArrayList<ColumnEntry>(); if(firstColumnEntries.size() == 0){ initLvData(columnEntries.get(0).getId()); return; } for(int i=0;i<classTypes.size();i++){ if(classTypes.get(i).getParentId().equals(firstColumnEntries.get(0).getId())){ ColumnEntry menuNodeChilds = new ColumnEntry(); menuNodeChilds.setId(classTypes.get(i).getClassId()); menuNodeChilds.setName(classTypes.get(i).getContent()); secondColumnEntries.add(menuNodeChilds); } } if(secondColumnEntries.size() == 0){ phoneStudyListView.setVisibility(View.VISIBLE); initLvData(firstColumnEntries.get(0).getId()); return; } HorGridViewAdapter gridViewAdapter2 = new HorGridViewAdapter(KindsActivity.this,secondColumnEntries,true); gridView2.setAdapter(gridViewAdapter2, 4); if(secondColumnEntries.size() != 0) findViewById(R.id.phone_study_gridviewparent2).setVisibility(View.VISIBLE); phoneStudyListView.setVisibility(View.VISIBLE); initLvData(secondColumnEntries.get(0).getId()); } }