/**============================================================ * 版权: 久其软件 版权所有 (c) * 修改记录: * 日期 作者 内容 * ============================================================= * joe * ============================================================*/ package com.jiuqi.njt.register.city; import java.util.ArrayList; import java.util.List; import android.annotation.SuppressLint; import android.app.Activity; import android.app.Dialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewStub; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.TextView; import com.jiuqi.njt.R; import com.jiuqi.njt.data.OptsharepreInterface; import com.jiuqi.njt.ui.WearthActivityNew; import com.jiuqi.njt.util.Constants; import com.jiuqi.njt.util.RepairUtils; import com.jiuqi.njt.util.TitleBarUtil; import com.jiuqi.njt.util.UIUtil; /** * <p> * 行政区划控件(平铺数据) * </p> * * <p> * Copyright: 版权所有 (c)<br> * Company: 久其 * </p> * * @author joe * */ public class WeatherXzqhActivity extends Activity { // private Button btnLeft; // private static final int MAX_BTN_LEFT_CHARACTERS = 2; private String TAG = this.getClass().getName(); private OptsharepreInterface sharePre; // private boolean isOnlyProvince; // 是否只展示省 // private boolean isOnlyCity; // 是否值展示到市 // private boolean isDonotShowOther; // 是否显示其他 private LinearLayout xzqhLayout; private int module_num = 4; private int width; private int textSise = 0; private CityDataUtil dbHelper; private CityBean weatherCity; private SavaCitySuccessReceiver loginReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); doinit(); } private void doinit() { initParam(); initWidget(); // initUI(); initListener(); // initUINew(weatherCity); } @Override protected void onDestroy() { super.onDestroy(); if (null != loginReceiver) { unregisterReceiver(loginReceiver); } } private void initParam() { weatherCity = (CityBean) getIntent().getSerializableExtra( Constants.WEATHER_PARAM_XZQH); sharePre = new OptsharepreInterface(this); // sharePre.removePre(Constants.SELECTED_XZQH_CODE); dbHelper = new CityDataUtil(this); width = UIUtil.getScreenWidth(WeatherXzqhActivity.this); textSise = (int) (width * 0.048); loginReceiver = new SavaCitySuccessReceiver(); IntentFilter loginFilter = new IntentFilter(); loginFilter.addAction(Constants.SAVECITYDATA); registerReceiver(loginReceiver, loginFilter); } private void initWidget() { setContentView(R.layout.xzqh_new_activity); xzqhLayout = (LinearLayout) findViewById(R.id.xzqh_layout); ViewStub rlTitleBar = (ViewStub) findViewById(R.id.titleBarStub); TitleBarUtil.createTitleBar(this, rlTitleBar, "选择地区", new OnBackClickListener()); } private Handler handler = new Handler() { private Dialog pd; @Override public void handleMessage(Message msg) { super.handleMessage(msg); List<CityBean> municipalitiesCityList; switch (msg.what) { case 1: pd = RepairUtils.myShowDialog(WeatherXzqhActivity.this, 5); break; case 2: initUINew(weatherCity); RepairUtils.myRemoveDialog(pd); break; case 3: municipalitiesCityList = dbHelper.queryProvinceChildCity(bean.getProvinceName()); for (CityBean city : municipalitiesCityList) { city.setLevel(city.getLevel() + 1); } xzqhLayout.removeAllViews(); creatUINew(bean.getProvinceName(), municipalitiesCityList); RepairUtils.myRemoveDialog(pd); break; case 4: initUI(); RepairUtils.myRemoveDialog(pd); break; // case 5: // municipalitiesCityList = dbHelper.queryProvinceChildCity(bean.getProvinceName()); // creatUINew(bean.getProvinceName(), municipalitiesCityList); // RepairUtils.myRemoveDialog(pd); // break; default: break; } } }; private CityBean bean; /** * 用于监听 * @author joe * */ public class SavaCitySuccessReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.e(TAG,"----------1111111------"); // bean = (CityBean) intent.getSerializableExtra(Constants.SAVECITYDATA); if(null!=bean){ handler.sendEmptyMessage(3); }else{ handler.sendEmptyMessage(2); } } } private void initListener() { handler.sendEmptyMessage(1); final String name = sharePre.getPres(Constants.SAVECITYDATA); new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(7000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (!name.equals("1")) { handler.sendEmptyMessage(4); } } }).start();; if (name.equals("1")) { handler.sendEmptyMessage(2); } } private void initUINew(final CityBean cityBean) { /** * 直辖市 */ List<CityBean> municipalitiesCityList = dbHelper.queryMunicipalitiesCity(); for (CityBean city : municipalitiesCityList) { city.setLevel(city.getLevel() + 1); } creatUINew("直辖市", municipalitiesCityList); /** * 省份 */ List<CityBean> provinceList = dbHelper.queryProvince(); creatUINew("省份", provinceList); /** * 自治区 */ List<CityBean> autonomousRegionCityList = dbHelper.queryAutonomousRegionCity(); creatUINew("自治区", autonomousRegionCityList); /** * 特别行政区 */ List<CityBean> specialAdministrativeRegionCityList = dbHelper.querySpecialAdministrativeRegionCity(); for (CityBean city : specialAdministrativeRegionCityList) { city.setLevel(city.getLevel() + 1); } creatUINew("特别行政区", specialAdministrativeRegionCityList); } /** * 通过自己初始化的省分数据来生成页面 * 用于多线程解析Excel文件时使用 */ private void initUI(){ /** * 直辖市 */ List<CityBean> municipalitiesCityList =new AllProvince().getAllMunicipalitiesCityNew(); for (CityBean city : municipalitiesCityList) { city.setLevel(city.getLevel() + 1); city.setCityName(city.getProvinceName()); } creatUINew("直辖市", municipalitiesCityList); /** * 省份 */ List<CityBean> provinceList = new AllProvince().getAllProvinceNew(); creatUINew("省份", provinceList); /** * 自治区 */ List<CityBean> autonomousRegionCityList = new AllProvince().getAllAutonomousRegionNew(); creatUINew("自治区", autonomousRegionCityList); /** * 特别行政区 */ List<CityBean> specialAdministrativeRegionCityList = new AllProvince().getAllSpecialAdministrativeRegionCity(); for (CityBean city : specialAdministrativeRegionCityList) { city.setLevel(city.getLevel() + 1); city.setCityName(city.getProvinceName()); } creatUINew("特别行政区", specialAdministrativeRegionCityList); } /** * 根据标题和下面的本内容生成页面显示的效果 * * @param name * 显示标题的名字 * @param data * 标题下面的数据集合List<AdminAreaBean> */ private void creatUINew(String name, List<CityBean> data) { TextView nameText = new TextView(this); nameText.setText(name); nameText.setGravity(Gravity.CENTER); LinearLayout.LayoutParams parm = new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); parm.setMargins((int) (width * 0.05), (int) (width * 0.02), 0, (int) (width * 0.02)); nameText.setTextSize(android.util.TypedValue.COMPLEX_UNIT_PX, textSise); nameText.setLayoutParams(parm); xzqhLayout.addView(nameText); addSecondViewNew(data); } // 二级模块控件初始化 @SuppressLint("ResourceAsColor") private void addSecondViewNew(List<CityBean> secondList) { // 二级按钮 LinearLayout secondModuleLayout = null; int j = 0; int widthJG = (int) (width * 0.02); for (CityBean sModule : secondList) { if (j++ % module_num == 0) { secondModuleLayout = new LinearLayout(this); LinearLayout.LayoutParams second_params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); secondModuleLayout.setLayoutParams(second_params); xzqhLayout.addView(secondModuleLayout); } TextView text = new TextView(this); text.setTextColor(R.color.gray); text.setGravity(Gravity.CENTER); text.setBackgroundResource(R.drawable.bg_listitem); text.setTextSize(android.util.TypedValue.COMPLEX_UNIT_PX, textSise); LinearLayout.LayoutParams second_params = new LinearLayout.LayoutParams( (int) (width * 0.2), LinearLayout.LayoutParams.WRAP_CONTENT); second_params.setMargins(widthJG, widthJG, widthJG, widthJG); String name = sModule.getProvinceName(); /** * 根据数据的等级选择展示的名称 */ switch (sModule.getLevel()) { case 0: name = sModule.getProvinceName();// 显示省级名 if (null != weatherCity) { String provinceName = weatherCity.getProvinceName(); if (null != provinceName && provinceName.equals(name)) { text.setBackgroundResource(R.color.bgPressed); } } break; case 1: name = sModule.getCityName();// 显示市级名 break; case 2: name = sModule.getCountyName();// 显示县级名 break; default: break; } text.setText(name); text.setLayoutParams(second_params); final CityBean selcetCitybean = sModule; text.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { /** * 等级小于2 说明需要查询下级数据 */ if (selcetCitybean.getLevel() < 2) { List<CityBean> municipalitiesCityList = new ArrayList<CityBean>(); CityBean cityBean = new CityBean(); String title = ""; switch (selcetCitybean.getLevel()) { case 0: /** * 查询的等级是0,说明是查询省, */ if(sharePre.getPres(Constants.SAVECITYDATA).equals("0")){ bean = selcetCitybean; Log.e(TAG, bean.toString()); xzqhLayout.removeAllViews(); handler.sendEmptyMessage(1); return; } municipalitiesCityList = dbHelper.queryProvinceChildCity(selcetCitybean.getProvinceName()); // if(null==municipalitiesCityList||municipalitiesCityList.size()<1){ // new Thread(new Runnable() { // // @Override // public void run() { // ExcelReader.getData(WeatherXzqhActivity.this, citybean); // } // }).start();; // handler.sendEmptyMessage(1); // } title = selcetCitybean.getProvinceName(); break; case 1: /** * 查询的等级是1,说明是查询市, */ cityBean.setCountryName("中国"); cityBean.setCityName(selcetCitybean.getCityName()); municipalitiesCityList = dbHelper.queryChildCity(cityBean); /** * 将选择的市作为县级数据的第一条数据展示 */ if (null != municipalitiesCityList) { if (!selcetCitybean.getCityName().equals(municipalitiesCityList.get(0).getCountyName())) { List<CityBean> temp = new ArrayList<CityBean>(); int index = -1; /** * 取出数据中的市数据,放到集合的第一个位置 */ for (int i = 0; i < municipalitiesCityList.size(); i++) { if(municipalitiesCityList.get(i).getCityName().equals(municipalitiesCityList.get(i).getCountyName())){ temp.add(municipalitiesCityList.get(i)); index = i; } } if(-1!=index){ municipalitiesCityList.remove(index); } temp.addAll(municipalitiesCityList); municipalitiesCityList =new ArrayList<CityBean>(); municipalitiesCityList.addAll(temp); temp = null; } } title = selcetCitybean.getCityName(); break; case 2: /** * 查询的等级是2,说明是查询县, */ cityBean.setCountryName("中国"); cityBean.setCityName(selcetCitybean.getCityName()); municipalitiesCityList = dbHelper.queryChildCity(cityBean); title = selcetCitybean.getCountyName(); break; default: break; } /** * 点击后下级的等级自动加一,表示下级数据 */ for (CityBean city : municipalitiesCityList) { city.setLevel(selcetCitybean.getLevel() + 1); } xzqhLayout.removeAllViews(); creatUINew(title, municipalitiesCityList); } else { /** * 直接将数据返回 */ Intent data = new Intent(); data.setClass(WeatherXzqhActivity.this, WearthActivityNew.class); data.putExtra(Constants.WEATHER_PARAM_XZQH, selcetCitybean); setResult(RESULT_OK, data); finish(); } } }); secondModuleLayout.setBackgroundResource(R.color.white); secondModuleLayout.addView(text); } } /** * 返回按钮响应事件 * * @author Joe * */ private class OnBackClickListener implements OnClickListener { @Override public void onClick(View v) { WeatherXzqhActivity.this.finish(); } } }