/**============================================================
* 版权: 久其软件 版权所有 (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();
}
}
}