android横向列表选择器,Android 城市列表选择控件

封装好了,只要调用一下这个控件,话不多说,上图!(里面的省市,地区,放在一个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 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();

}

}

}

b98e6a1503f2269bced6cd4897f42d3c.png

2aa1f003b991566717706492b2f99335.png

aff7071380254a06d3ea7c65f16ea564.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值