实例介绍
【实例简介】
【实例截图】
【核心代码】
package com.example.test; import android.annotation.SuppressLint; import android.content.Context; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.LinearLayout; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map.Entry; import com.example.test.ScrollerCity.OnSelectListener; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; /** * 城市Picker * * @author zq * */ public class CityPickerView extends LinearLayout { /** 滑动控件 */ private ScrollerCity provincePicker; private ScrollerCity cityPicker; private ScrollerCity counyPicker; /** 选择监听 */ private OnSelectingListener onSelectingListener; /** 刷新界面 */ private static final int REFRESH_VIEW = 0x001; /** 临时日期 */ private int tempProvinceIndex = -1; private int temCityIndex = -1; private int tempCounyIndex = -1; private Context context; private List<Cityinfo> province_list = new ArrayList<Cityinfo>(); private HashMap<String, List<Cityinfo>> city_map = new HashMap<String, List<Cityinfo>>(); private HashMap<String, List<Cityinfo>> couny_map = new HashMap<String, List<Cityinfo>>(); private static ArrayList<String> province_list_code = new ArrayList<String>(); private static ArrayList<String> city_list_code = new ArrayList<String>(); private static ArrayList<String> couny_list_code = new ArrayList<String>(); private CityUtil citycodeUtil; private String city_code_string; private String city_string; public CityPickerView(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; getaddressinfo(); // TODO Auto-generated constructor stub } public CityPickerView(Context context) { super(context); this.context = context; getaddressinfo(); // TODO Auto-generated constructor stub } // 获取城市信息 private void getaddressinfo() { // TODO Auto-generated method stub // 读取城市信息string JSONParser parser = new JSONParser(); String area_str = FileUtil.readAssets(context, "area.json"); province_list = parser.getJSONParserResult(area_str, "area0"); // citycodeUtil.setProvince_list_code(parser.province_list_code); city_map = parser.getJSONParserResultArray(area_str, "area1"); couny_map = parser.getJSONParserResultArray(area_str, "area2"); } public static class JSONParser { public ArrayList<String> province_list_code = new ArrayList<String>(); public ArrayList<String> city_list_code = new ArrayList<String>(); public List<Cityinfo> getJSONParserResult(String JSONString, String key) { List<Cityinfo> list = new ArrayList<Cityinfo>(); JsonObject result = new JsonParser().parse(JSONString) .getAsJsonObject().getAsJsonObject(key); Iterator iterator = result.entrySet().iterator(); while (iterator.hasNext()) { Entry<String, JsonElement> entry = (Entry<String, JsonElement>) iterator .next(); Cityinfo cityinfo = new Cityinfo(); cityinfo.setCity_name(entry.getValue().getAsString()); cityinfo.setId(entry.getKey()); province_list_code.add(entry.getKey()); list.add(cityinfo); } return list; } public HashMap<String, List<Cityinfo>> getJSONParserResultArray( String JSONString, String key) { HashMap<String, List<Cityinfo>> hashMap = new HashMap<String, List<Cityinfo>>(); JsonObject result = new JsonParser().parse(JSONString) .getAsJsonObject().getAsJsonObject(key); Iterator iterator = result.entrySet().iterator(); while (iterator.hasNext()) { Entry<String, JsonElement> entry = (Entry<String, JsonElement>) iterator .next(); List<Cityinfo> list = new ArrayList<Cityinfo>(); JsonArray array = entry.getValue().getAsJsonArray(); for (int i = 0; i < array.size(); i ) { Cityinfo cityinfo = new Cityinfo(); cityinfo.setCity_name(array.get(i).getAsJsonArray().get(0) .getAsString()); cityinfo.setId(array.get(i).getAsJsonArray().get(1) .getAsString()); city_list_code.add(array.get(i).getAsJsonArray().get(1) .getAsString()); list.add(cityinfo); } hashMap.put(entry.getKey(), list); } return hashMap; } } @Override protected void onFinishInflate() { super.onFinishInflate(); LayoutInflater.from(getContext()).inflate(R.layout.city_picker, this); citycodeUtil = CityUtil.getSingleton(); // 获取控件引用 provincePicker = (ScrollerCity) findViewById(R.id.province); cityPicker = (ScrollerCity) findViewById(R.id.city); counyPicker = (ScrollerCity) findViewById(R.id.couny); provincePicker.setData(citycodeUtil.getProvince(province_list)); provincePicker.setDefault(1); cityPicker.setData(citycodeUtil.getCity(city_map, citycodeUtil .getProvince_list_code().get(1))); cityPicker.setDefault(1); counyPicker.setData(citycodeUtil.getCouny(couny_map, citycodeUtil .getCity_list_code().get(1))); counyPicker.setDefault(1); provincePicker.setOnSelectListener(new OnSelectListener() { public void endSelect(int id, String text) { // TODO Auto-generated method stub if (text.equals("") || text == null) return; if (tempProvinceIndex != id) { String selectDay = cityPicker.getSelectedText(); if (selectDay == null || selectDay.equals("")) return; String selectMonth = counyPicker.getSelectedText(); if (selectMonth == null || selectMonth.equals("")) return; // 城市数组 cityPicker.setData(citycodeUtil.getCity(city_map, citycodeUtil.getProvince_list_code().get(id))); cityPicker.setDefault(1); counyPicker.setData(citycodeUtil.getCouny(couny_map, citycodeUtil.getCity_list_code().get(1))); counyPicker.setDefault(1); int lastDay = Integer.valueOf(provincePicker.getListSize()); if (id > lastDay) { provincePicker.setDefault(lastDay - 1); } } tempProvinceIndex = id; Message message = new Message(); message.what = REFRESH_VIEW; handler.sendMessage(message); } public void selecting(int id, String text) { // TODO Auto-generated method stub } }); cityPicker.setOnSelectListener(new OnSelectListener() { @Override public void endSelect(int id, String text) { // TODO Auto-generated method stub if (text.equals("") || text == null) return; if (temCityIndex != id) { String selectDay = provincePicker.getSelectedText(); if (selectDay == null || selectDay.equals("")) return; String selectMonth = counyPicker.getSelectedText(); if (selectMonth == null || selectMonth.equals("")) return; counyPicker.setData(citycodeUtil.getCouny(couny_map, citycodeUtil.getCity_list_code().get(id))); counyPicker.setDefault(1); int lastDay = Integer.valueOf(cityPicker.getListSize()); if (id > lastDay) { cityPicker.setDefault(lastDay - 1); } } temCityIndex = id; Message message = new Message(); message.what = REFRESH_VIEW; handler.sendMessage(message); } @Override public void selecting(int id, String text) { // TODO Auto-generated method stub } }); counyPicker.setOnSelectListener(new OnSelectListener() { @Override public void endSelect(int id, String text) { // TODO Auto-generated method stub if (text.equals("") || text == null) return; if (tempCounyIndex != id) { String selectDay = provincePicker.getSelectedText(); if (selectDay == null || selectDay.equals("")) return; String selectMonth = cityPicker.getSelectedText(); if (selectMonth == null || selectMonth.equals("")) return; // 城市数组 city_code_string = citycodeUtil.getCouny_list_code() .get(id); int lastDay = Integer.valueOf(counyPicker.getListSize()); if (id > lastDay) { counyPicker.setDefault(lastDay - 1); } } tempCounyIndex = id; Message message = new Message(); message.what = REFRESH_VIEW; handler.sendMessage(message); } @Override public void selecting(int id, String text) { // TODO Auto-generated method stub } }); } @SuppressLint("HandlerLeak") Handler handler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); switch (msg.what) { case REFRESH_VIEW: if (onSelectingListener != null) onSelectingListener.selected(true); break; default: break; } } }; public void setOnSelectingListener(OnSelectingListener onSelectingListener) { this.onSelectingListener = onSelectingListener; } public String getCity_code_string() { return city_code_string; } public String getCity_string() { city_string = provincePicker.getSelectedText() cityPicker.getSelectedText() counyPicker.getSelectedText(); return city_string; } public interface OnSelectingListener { public void selected(boolean selected); } }
好例子网口号:伸出你的我的手 — 分享!
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论