package com.wise.wawc;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.wise.data.CharacterParser;
import com.wise.data.IllegalCity;
import com.wise.data.ProvinceModel;
import com.wise.pubclas.Constant;
import com.wise.pubclas.NetThread;
import com.wise.pubclas.Variable;
import com.wise.service.IllegalProvinceAdapter;
import com.wise.sql.DBExcute;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.ContentValues;
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.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView;
import android.widget.ListView;
/**
* 违章城市选择省份
* @author Mr'Wang
*/
public class IllegalCitiyActivity extends Activity {
ListView provinceListView;
ListView cityListView;
IllegalProvinceAdapter adapter;
ProgressDialog myDialog = null;
DBExcute dbExcute;
static List<ProvinceModel> illegalList;
ImageView back;
private int requestCode = 0;
public static final String showProvinceAction = "province";
public static final String showCityAction = "city";
private MyHandler myHandler = null;
public DBExcute dBExcute = null;
CharacterParser characterParser;
PinyinComparator comparator;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.illegal_province_activity);
provinceListView = (ListView) findViewById(R.id.illegal_provnice_list);
cityListView = (ListView) findViewById(R.id.illegal_city_list);
back = (ImageView) findViewById(R.id.illegal_province_back);
dbExcute = new DBExcute();
requestCode = getIntent().getIntExtra("requestCode", 0);
characterParser = new CharacterParser().getInstance();
comparator = new PinyinComparator();
dBExcute = new DBExcute();
myHandler = new MyHandler();
//相关监听
provinceListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
//选择省份之后选择城市
Variable.illegalList = Variable.illegalProvinceList.get(arg2).getIllegalCityList();
provinceListView.setVisibility(View.GONE);
adapter = new IllegalProvinceAdapter(null, IllegalCitiyActivity.this,showCityAction,Variable.illegalList);
cityListView.setAdapter(adapter);
cityListView.setVisibility(View.VISIBLE);
}
});
//点击选择城市
cityListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
Log.e("违章城市","违章城市");
Intent intent = new Intent();
intent.putExtra("IllegalCity", Variable.illegalList.get(arg2));
if(requestCode == NewVehicleActivity.getCityViolateRegulationsCode){
Log.e("来自新增爱车","来自新增爱车");
}else if(requestCode == 41){
Log.e("来自我的爱车","来自我的爱车");
}
IllegalCitiyActivity.this.setResult(requestCode, intent);
IllegalCitiyActivity.this.finish();
}
});
back.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(cityListView.getVisibility() == View.VISIBLE){
cityListView.setVisibility(View.GONE);
provinceListView.setVisibility(View.VISIBLE);
}else{
//MyVehicleActivity.illegalCityStr = "";
IllegalCitiyActivity.this.finish();
}
}
});
//判断违章数据是否存在本地
String jsonData = dBExcute.selectIllegal(IllegalCitiyActivity.this);
if(Variable.illegalProvinceList == null){
myDialog = ProgressDialog.show(IllegalCitiyActivity.this, getString(R.string.dialog_title), getString(R.string.dialog_message));
myDialog.setCancelable(true);
new Thread(new NetThread.GetDataThread(myHandler, Constant.BaseUrl+"violation/city?cuth_code=" + Variable.auth_code, 0)).start();
}else{
//解析数据 并且更新
Variable.illegalProvinceList = parseJson(jsonData);
adapter = new IllegalProvinceAdapter(Variable.illegalProvinceList, IllegalCitiyActivity.this,showProvinceAction,null);
provinceListView.setAdapter(adapter);
}
}
class MyHandler extends Handler{
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(!"".equals(msg.obj.toString())){
ContentValues values = new ContentValues();
values.put("json_data", msg.obj.toString());
dBExcute.InsertDB(IllegalCitiyActivity.this, values, Constant.TB_IllegalCity);
Variable.illegalProvinceList = parseJson(msg.obj.toString());
adapter = new IllegalProvinceAdapter(Variable.illegalProvinceList, IllegalCitiyActivity.this,showProvinceAction,null);
provinceListView.setAdapter(adapter);
myDialog.dismiss();
}
}
}
//获取省份 TODO
public List<ProvinceModel> parseJson(String jsonData){
illegalList = new ArrayList<ProvinceModel>();
try {
JSONObject jsonObj = new JSONObject(jsonData);
JSONObject result = jsonObj.getJSONObject("result");
Iterator it = result.keys();
while(it.hasNext()){
List<IllegalCity> illegalCityList = new ArrayList<IllegalCity>();
ProvinceModel provinceModel = new ProvinceModel();
String key = it.next().toString();
JSONObject jsonObject = result.getJSONObject(key);
String province = jsonObject.getString("province"); //省份
JSONArray jsonArray = jsonObject.getJSONArray("citys"); //城市
for(int i = 0 ; i < jsonArray.length() ; i ++){
IllegalCity illegalCity = new IllegalCity();
JSONObject jsonObject3 = jsonArray.getJSONObject(i);
illegalCity.setAbbr(jsonObject3.getString("abbr"));
illegalCity.setCityCode(jsonObject3.getString("city_code"));
illegalCity.setCityName(jsonObject3.getString("city_name"));
illegalCity.setClassa(jsonObject3.getString("classa"));
illegalCity.setEngine(jsonObject3.getString("engine"));
illegalCity.setEngineno(jsonObject3.getString("engineno"));
illegalCity.setRegist(jsonObject3.getString("regist"));
illegalCity.setRegistno(jsonObject3.getString("registno"));
illegalCity.setVehiclenum(jsonObject3.getString("class"));
illegalCity.setVehiclenumno(jsonObject3.getString("classno"));
illegalCityList.add(illegalCity);
}
provinceModel.setIllegalCityList(illegalCityList);
provinceModel.setProvinceName(province);
illegalList.add(provinceModel);
}
} catch (JSONException e) {
e.printStackTrace();
}
//排序后返回
if(illegalList == null){
Log.e("List<ProvinceModel>==null","YES");
}else{
for(int i = 0 ; i < illegalList.size() ; i ++){
Log.e("province:",illegalList.get(i).getProvinceName());
}
}
return filledData(illegalList);
}
//将省份汉字转为拼音
private List<ProvinceModel> filledData(List<ProvinceModel> provinceModelList){
for(int i=0; i<provinceModelList.size(); i++){
ProvinceModel sortModel = provinceModelList.get(i);
//汉字转换成拼音
String pinyin = characterParser.getSelling(provinceModelList.get(i).getProvinceName());
String sortString = pinyin.substring(0, 1).toUpperCase();
sortModel.setProvinceLetter(sortString.toUpperCase()); //设置拼音
}
Collections.sort(provinceModelList, comparator);
return provinceModelList;
}
//根据拼音首字母排序
class PinyinComparator implements Comparator<ProvinceModel> {
public int compare(ProvinceModel o1, ProvinceModel o2) {
if (o1.getProvinceLetter().equals("@")
|| o2.getProvinceLetter().equals("#")) {
return -1;
} else if (o1.getProvinceLetter().equals("#")
|| o2.getProvinceLetter().equals("@")) {
return 1;
} else {
return o1.getProvinceLetter().compareTo(o2.getProvinceLetter());
}
}
}
}