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