Android 城市列表选择控件
来源:互联网 发布:淘宝金蛋 编辑:程序博客网 时间:2024/05/22 14:53
封装好了,只要调用一下这个控件,话不多说,上图!(里面的省市,地区,放在一个xml文件中)
public class CityPickerDialog extends Dialog implements
android.view.View.OnClickListener {
// private Context mContext;
private TextView title;
private ListView provinceListview;
private Button btnCancel;
private Button btnOk;
// private Dialog customDialog;
private MSharePreferences sharePreferences;
private OnCityPikerListener mlistener;
private List<ProvinceModel> provinces;
private ProvinceAdapter provinceAdapter;
private ProvinceAdapter cityAdapter;
public interface OnCityPikerListener {
void onCityPicker(String province, String city);
}
public CityPickerDialog(Context context,
OnCityPikerListener onCityPickerListener) {
// super(context,R.style.customdialog);
// TODO Auto-generated constructor stub
this(context, R.style.customdialog, onCityPickerListener);
}
public CityPickerDialog(Context context, int theme,
OnCityPikerListener onCityPickerListener) {
super(context, theme);
mlistener = onCityPickerListener;
// TODO Auto-generated constructor stub
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
View view = LayoutInflater.from(getContext()).inflate(
R.layout.province_listview, null);
title = (TextView) view.findViewById(R.id.title);
provinceListview = (ListView) view.findViewById(R.id.provinceList);
btnCancel = (Button) view.findViewById(R.id.btnCancel);
btnOk = (Button) view.findViewById(R.id.btnOk);
btnCancel.setOnClickListener(this);
btnOk.setOnClickListener(this);
setContentView(view);
setCancelable(true);
sharePreferences = MSharePreferences.getInstance();
sharePreferences.getSharedPreferences(getContext());
initProvinceDatas();
initProvince();
initDialogSize();
}
private boolean isCity;
public void initProvince() {
title.setText(R.string.province);
provinceAdapter = new ProvinceAdapter(getContext(), provinces);
provinceListview.setAdapter(provinceAdapter);
provinceListview.setSelection(sharePreferences.getInt(
Tools.KEY_PROVINCE, 0));
isCity = true;
}
public void initDialogSize() {
Window dialogWindow = getWindow();
DisplayMetrics d = getContext().getResources().getDisplayMetrics();
WindowManager.LayoutParams p = dialogWindow.getAttributes();
p.height = LayoutParams.WRAP_CONTENT;
p.width = (int) (d.widthPixels * 0.8);
dialogWindow.setAttributes(p);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btnCancel:
dismiss();
break;
case R.id.btnOk:
int provincePosition = provinceAdapter.getSelectedIndex();
String province = provinces.get(provincePosition).getName();
String city;
if (isCity) {
title.setText(R.string.city);
cityAdapter = new ProvinceAdapter(getContext(), provinces.get(
provincePosition).getCityList(), false);
provinceListview.setAdapter(cityAdapter);
isCity = false;
} else {
city = provinces.get(provincePosition).getCityList()
.get(cityAdapter.getSelectedIndex()).getName();
sharePreferences.putInt(Tools.KEY_PROVINCE, provincePosition);
mlistener.onCityPicker(province, city);
dismiss();
}
break;
default:
break;
}
}
public void initProvinceDatas() {
AssetManager asset = getContext().getAssets();
try {
InputStream input = asset.open("province_data.xml");
// 创建一个解析xml的工厂对象
SAXParserFactory spf = SAXParserFactory.newInstance();
// 解析xml
SAXParser parser = spf.newSAXParser();
XmlParserHandler handler = new XmlParserHandler();
parser.parse(input, handler);
input.close();
// 获取解析出来的数据
provinces = handler.getDataList();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
源码下载地址 http://download.csdn.net/detail/wwatchtower/8946813
- Android 城市列表选择控件
- Android 城市选择万能控件
- Android 自定义View实现城市选择列表
- Android之自定义控件-城市选择
- [js学习笔记]城市选择控件(双下拉框选择不同城市列表)
- 省份 城市 选择列表
- 城市选择控件
- Android城市选择列表(二)——快速索引
- android中百度定位、城市选择列表,右侧字母展示
- winform 实现选择城市列表
- 城市定位和选择列表
- Android使用NumberPicker控件实现选择城市,生日
- Android城市列表
- android 城市列表
- 自定义控件实现城市列表
- android使用自定控件实现城市列表展示并且实现当前城市定位
- Android 城市选择
- android 城市选择
- vertical-align的浅谈
- 源码推荐(7.29):iOS图片查看器(多图全屏查看可缩放),给UITextView 添加超链接
- CMD下编译运行Java包文件
- wwwwwwwww
- LATEX 中修改表格线条粗细hline
- Android 城市列表选择控件
- 入驻今日头条
- 数字化精准测试工具ThreadingTestCloud面向互联网征集产品设计人员
- UIButton详解
- modem-rf代码调用分析,及调试
- CSS中常用的四种选择器
- The method replace(int, Fragment) in the type FragmentTransaction is not app 解决方法
- redis学习笔记
- 遇到的浏览器的兼容性问题(随时增加)