/**============================================================ * 版权: 久其软件 版权所有 (c) * 包: com.jiuqi.njt.widget * 修改记录: * 日期 作者 内容 * ============================================================= * joe * ============================================================*/ package com.jiuqi.njt.widget; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; 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.mobile.nigo.comeclose.bean.base.AdminAreaBean; import com.jiuqi.njt.R; import com.jiuqi.njt.data.OptsharepreInterface; import com.jiuqi.njt.register.KAdminAreaBean; import com.jiuqi.njt.register.KAdminAreaBeanUtil; import com.jiuqi.njt.register.city.AdminAreaBeanDBUtil; import com.jiuqi.njt.ui.weather.GetAdminAreaDataTask; import com.jiuqi.njt.ui.weather.XzqhReturnObject; import com.jiuqi.njt.util.Constants; import com.jiuqi.njt.util.TitleBarUtil; import com.jiuqi.njt.util.UIUtil; import com.jqyd.android.module.lbs.util.CheckState_interface; /** * <p> * 行政区划控件(平铺数据) * </p> * * <p> * Copyright: 版权所有 (c)<br> * Company: 久其 * </p> * * @author joe * */ public class XzqhActivityNew extends Activity { private Context context = this; private String TAG = this.getClass().getName(); // private Button btnLeft; // private static final int MAX_BTN_LEFT_CHARACTERS = 2; private OptsharepreInterface sharePre; private AdminAreaBean pxzqh = null; private AdminAreaBean xzqh = null; private boolean isOnlyProvince; // 是否只展示省 private boolean isOnlyCity; // 是否值展示到市 private LinearLayout xzqhLayout; // 是否显示其他 private int module_num = 4; private int width; private boolean isDonotShowOther; private int textSise = 0; private AdminAreaBeanDBUtil dbUtil; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Serializable serializableExtra = getIntent().getSerializableExtra( Constants.PARAM_XZQH); if (null == serializableExtra) { doinit(null); } else { if (serializableExtra instanceof AdminAreaBean) { AdminAreaBean x = (AdminAreaBean) serializableExtra; doinit(x); } } } private void doinit(AdminAreaBean para) { initParam(para); initWidget(); initListener(); initUI(para); } private void initParam(AdminAreaBean para) { isOnlyProvince = getIntent().getBooleanExtra(Constants.PARAM_PROVINCE, false); isOnlyCity = getIntent().getBooleanExtra(Constants.PARAM_CiTY, false); isDonotShowOther = getIntent().getBooleanExtra("DonotShowOther", false); sharePre = new OptsharepreInterface(this); dbUtil = new AdminAreaBeanDBUtil(context); width = UIUtil.getScreenWidth(XzqhActivityNew.this); textSise = (int) (width * 0.048); if (null != para) { if ("全国".equals(para.getName())) { para = null; } pxzqh = para; } } 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 void initListener() { } protected void doConfirm() { AdminAreaBean selectXzqh = null; if (null == xzqh) { if (null != pxzqh) { selectXzqh = pxzqh; }else { selectXzqh = null; } } else { selectXzqh = xzqh; } Intent data = new Intent(); data.putExtra(Constants.PARAM_XZQH, selectXzqh); setResult(RESULT_OK, data); finish(); } private void initUI(final AdminAreaBean xzqh) { // 接收上一界面传来的行政区划对象,如果为空,则认为是行政区划树的根节点 if (new CheckState_interface(XzqhActivityNew.this).checkConnection()) { if(isOnlyProvince&&"1".equals(sharePre.getPres(Constants.SAVEADMINAREADATA))){ List<KAdminAreaBean> data = dbUtil.queryAllKAdminAreaBean(); List<AdminAreaBean> dataNew = new ArrayList<AdminAreaBean>(); for (KAdminAreaBean kAdminAreaBean2 : data) { dataNew.add(KAdminAreaBeanUtil.convertToAdminAreaBean(kAdminAreaBean2)); } AdminAreaBean[] res = dataNew.toArray(new AdminAreaBean[dataNew.size()]); getData(res, new MyConvertData()); }else{ new GetAdminAreaDataTask(XzqhActivityNew.this, xzqh, new GetAdminAreaDataTask.AdminAreaData() { @Override public void getAdminAreaBeanArray( XzqhReturnObject result) { if (result.isSuccess) { AdminAreaBean[] res = (AdminAreaBean[]) result.data; pxzqh = result.pxzqh; if (null == xzqh) { getData(res, new MyConvertData()); } else { xzqhLayout.removeAllViews(); creatUI(xzqh.getName(), Arrays.asList(res)); } if(!"1".equals(sharePre.getPres(Constants.SAVEADMINAREADATA))){ KAdminAreaBeanUtil kAdminAreaBeanUtil = new KAdminAreaBeanUtil(); for (int i = 0; i < res.length; i++) { dbUtil.addKAdminAreaBean(kAdminAreaBeanUtil.convertToKAdminAreaBean(res[i])); } sharePre.putPres(Constants.SAVEADMINAREADATA, 1 + ""); } // List<KAdminAreaBean> data = dbUtil.queryAllKAdminAreaBean(); // for (int i = 0; i < data.size(); i++) { // Log.e(TAG, data.get(i).toString()); // } } else { UIUtil.showMsg(getApplicationContext(), "没有数据"); } } }).execute(xzqh); } } else { UIUtil.showMsg(XzqhActivityNew.this, Constants.NETWORK_STATE_ERROR); } } /** * * 将所有的行政区划数据进行处理 处理后通过xzqhInterface接口的convertData方法将数据返回 * * @param data * 行政区划的所有数据 * @param xzqhInterface * 将所有数据处理完后返回数据的接口 */ public void getData(AdminAreaBean[] data, XzqhInterface xzqhInterface) { ArrayList<AdminAreaBean> cityXzqhData = new ArrayList<AdminAreaBean>(); ArrayList<AdminAreaBean> provenceXzqhData = new ArrayList<AdminAreaBean>(); ArrayList<AdminAreaBean> xzqhData = new ArrayList<AdminAreaBean>(); ArrayList<AdminAreaBean> otherXzqhData = new ArrayList<AdminAreaBean>(); ArrayList<AdminAreaBean> zizhiXzqhData = new ArrayList<AdminAreaBean>(); if (null != data && data.length > 0) { for (int i = 0; i < data.length; i++) { String name ; if(data[i].getLevel()==1){ name= data[i].getProvinceName(); }else{ name= data[i].getName(); } if (name.length() > 4) // 名字的长度大于4说明只能是自治区、特别行政区、或者其他 { if (name.contains("自治区")) // 名字中包含自治区就添加到zizhiXzqhData中 { zizhiXzqhData.add(data[i]); } else if (name.contains("特别行政区"))// 名字中包含特别行政区就添加到xzqhData中 { xzqhData.add(data[i]); } else// 否则就说明,它是其他( 例如新疆建设兵团、黑龙江垦区) { otherXzqhData.add(data[i]); } } else if (name.contains("省"))// 名字中包含省就添加到provenceXzqhData中 { provenceXzqhData.add(data[i]); } else if (name.contains("市"))// 名字中包含市就添加到cityXzqhData中 { cityXzqhData.add(data[i]); } } } xzqhInterface.convertData(cityXzqhData, provenceXzqhData, zizhiXzqhData, xzqhData, otherXzqhData); } /** * 将行政区划数据返回接口实现类 * * @author joe * */ public class MyConvertData implements XzqhInterface { @Override public void convertData(ArrayList<AdminAreaBean> cityXzqhData, ArrayList<AdminAreaBean> provenceXzqhData, ArrayList<AdminAreaBean> zizhiXzqhData, ArrayList<AdminAreaBean> xzqhData, ArrayList<AdminAreaBean> otherXzqhData) { // TODO Auto-generated method stub ArrayList<AdminAreaBean> nationData = new ArrayList<AdminAreaBean>(); AdminAreaBean nation = new AdminAreaBean(); nation.setCode(0); nationData.add(nation); showUI(cityXzqhData, provenceXzqhData, zizhiXzqhData, xzqhData, otherXzqhData,nationData); } } /** * * 根据数据的不同类型,确定显示的标题 * * @param cityXzqhData * 所有直辖市的ArrayList<AdminAreaBean> * @param provenceXzqhData * 所有省的ArrayList<AdminAreaBean> * @param zizhiXzqhData * 所有自治区的ArrayList<AdminAreaBean> * @param xzqhData * 所有特别行政区的ArrayList<AdminAreaBean> * @param otherXzqhData * 不属于以上情况的,其他的ArrayList<AdminAreaBean> */ private void showUI(ArrayList<AdminAreaBean> cityXzqhData, ArrayList<AdminAreaBean> provenceXzqhData, ArrayList<AdminAreaBean> zizhiXzqhData, ArrayList<AdminAreaBean> xzqhData, ArrayList<AdminAreaBean> otherXzqhData,ArrayList<AdminAreaBean> nationData) { xzqhLayout.removeAllViews(); creatUI("", nationData); if (null != cityXzqhData && cityXzqhData.size() > 0) { creatUI("直辖市", cityXzqhData); } if (null != provenceXzqhData && provenceXzqhData.size() > 0) { creatUI("省", provenceXzqhData); } if (null != zizhiXzqhData && zizhiXzqhData.size() > 0) { creatUI("自治区", zizhiXzqhData); } if (null != xzqhData && xzqhData.size() > 0) { creatUI("特别行政区", xzqhData); } if (!isDonotShowOther) { if (null != otherXzqhData && otherXzqhData.size() > 0) { creatUI("其他", otherXzqhData); } } } /** * 根据标题和下面的本内容生成页面显示的效果 * * @param name * 显示标题的名字 * @param data * 标题下面的数据集合List<AdminAreaBean> */ private void creatUI(String name, List<AdminAreaBean> data) { if (data.get(0).getCode() != 0) { 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); } addSecondView(data); } // 二级模块控件初始化 @SuppressLint("ResourceAsColor") private void addSecondView(List<AdminAreaBean> secondList) { // 二级按钮 LinearLayout secondModuleLayout = null; int j = 0; int widthJG = (int) (width * 0.02); for (final AdminAreaBean 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); if (sModule.getCode() == 0) { sModule.setName("全国"); }else { if ("广西壮族自治区".endsWith(sModule.getName())) { sModule.setName("广西"); } else if ("宁夏回族自治区".endsWith(sModule.getName())) { sModule.setName("宁夏"); } else if ("新疆维吾尔族自治区".endsWith(sModule.getName())) { sModule.setName("新疆"); } else if ("内蒙古自治区".endsWith(sModule.getName())) { sModule.setName("内蒙古"); } else if ("西藏自治区".endsWith(sModule.getName())) { sModule.setName("西藏"); } } text.setText(sModule.getName().replace("特别行政区", "")); text.setTextColor(R.color.gray); if (sModule.getCode() == 0) { text.setGravity(Gravity.LEFT); }else { text.setGravity(Gravity.CENTER); } text.setBackgroundResource(R.drawable.more_item_press); 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); text.setLayoutParams(second_params); final AdminAreaBean item = sModule; text.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // pxzqh = xzqh; /** * 如果是只选择省就直接返回数据 */ if (sModule.getCode() == 0) { xzqh = null; doConfirm(); } if (isOnlyProvince && item.getLevel() == 1) { xzqh = item; doConfirm(); } else { /** * 如果是只选择市就直接返回数据 */ if (item.getLevel() == 2 && isOnlyCity) { xzqh = item; doConfirm(); } else { /** * 否则就继续查询数据 */ xzqh = item; initUI(xzqh); } } } }); secondModuleLayout.setBackgroundResource(R.color.white); secondModuleLayout.addView(text); } } /** * 返回按钮响应事件 * * @author Joe * */ private class OnBackClickListener implements OnClickListener { @Override public void onClick(View v) { // if (pxzqh != null) { // if (pxzqh.getCode() == Constants.XZQH_ROOT_CODE) { // XzqhActivityNew.this.finish(); // } else { // initUI(pxzqh); // } // } else { // XzqhActivityNew.this.finish(); // } XzqhActivityNew.this.finish(); } } /** * 返回数据接口 * * @author Joe * */ public interface XzqhInterface { /** * @param cityXzqhData * 所有直辖市的ArrayList<AdminAreaBean> * @param provenceXzqhData * 所有省的ArrayList<AdminAreaBean> * @param zizhiXzqhData * 所有自治区的ArrayList<AdminAreaBean> * @param xzqhData * 所有特别行政区的ArrayList<AdminAreaBean> * @param otherXzqhData * 不属于以上情况的,其他的ArrayList<AdminAreaBean> */ public void convertData(ArrayList<AdminAreaBean> cityXzqhData, ArrayList<AdminAreaBean> provenceXzqhData, ArrayList<AdminAreaBean> zizhiXzqhData, ArrayList<AdminAreaBean> xzqhData, ArrayList<AdminAreaBean> otherXzqhData); } }