compile 'com.contrarywind:Android-PickerView:3.2.5'
private ArrayList<String> provinceArrary = new ArrayList<>();//省份的List private ArrayList<ArrayList<String>> cityArrary = new ArrayList<>();//城市的二维List
private OptionsPickerView mProvinceCityDialog = null; private void InitlaceDialog() { mProvinceCityDialog = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptionsSelectListener() { @Override public void onOptionsSelect(int options1, int options2, int options3, View v) { tProvinceCode = ProvinceAndCitylist.get(options1).getId(); tCityCode = ProvinceAndCitylist.get(options1).getCitys().get(options2).getId(); reqUpdatePlace(tProvinceCode,tCityCode); } }) .setTitleText("城市选择") .setContentTextSize(20)//设置滚轮文字大小 .setDividerColor(Color.TRANSPARENT)//设置分割线的颜色 .setSelectOptions(0, 1)//默认选中项 .setBgColor(Color.WHITE) .setTitleBgColor(Color.WHITE) .setTitleColor(Color.LTGRAY) .setCancelColor(Color.BLACK) .setSubmitColor(Color.BLACK) .setTextColorCenter(Color.BLACK) .isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。 .setLabels("", "", "区") .build(); mProvinceCityDialog.setPicker(provinceArrary, cityArrary); }
if (mProvinceCityDialog != null) mProvinceCityDialog.show(view);
省市区选择:
private TextView tv_main; private OptionsPickerView optionsPickerView;//条件选择器 private ArrayList<String> options1Items = new ArrayList<>(); private ArrayList<ArrayList<String>> options2Items = new ArrayList<>(); private ArrayList<ArrayList<ArrayList<String>>> options3tems = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_main = findViewById(R.id.tv_main); initOptionData(); initOptionPicker(); tv_main.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { optionsPickerView.show(v); } }); } /** * 条件选择器 */ private void initOptionPicker() { //如果是三级联动的数据 请参照 JsonDataActivity 类里面的写法。 optionsPickerView = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptionsSelectListener() { @Override public void onOptionsSelect(int options1, int options2, int options3, View v) { //返回的分别是三个级别的选中位置 String tx = options1Items.get(options1) + options2Items.get(options1).get(options2); ((Button) v).setText(tx); } }) .setTitleText("城市选择") .setContentTextSize(20)//设置滚轮文字大小 .setDividerColor(Color.GREEN)//设置分割线的颜色 .setSelectOptions(0, 1)//默认选中项 .setBgColor(Color.BLACK) .setTitleBgColor(Color.DKGRAY) .setTitleColor(Color.LTGRAY) .setCancelColor(Color.YELLOW) .setSubmitColor(Color.YELLOW) .setTextColorCenter(Color.LTGRAY) .isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。 .setLabels("省", "市", "区") .build(); /*pvOptions.setPicker(options1Items);//一级选择器*/ // optionsPickerView.setPicker(options1Items, options2Items);//二级选择器 optionsPickerView.setPicker(options1Items, options2Items, options3tems);//三级选择器* } private void initOptionData() { //选项1 options1Items.add("广东"); options1Items.add("湖南"); //选项2 ArrayList<String> options2Items_01 = new ArrayList<>(); options2Items_01.add("广州"); options2Items_01.add("佛山"); ArrayList<String> options2Items_02 = new ArrayList<>(); options2Items_02.add("长沙"); options2Items_02.add("岳阳"); options2Items.add(options2Items_01); options2Items.add(options2Items_02); ArrayList<ArrayList<String>> toptions2Items1 = new ArrayList<>(); ArrayList<ArrayList<String>> toptions2Items2 = new ArrayList<>(); ArrayList<String> options3Items_01 = new ArrayList<>(); options3Items_01.add("黄埔"); options3Items_01.add("黄"); options3Items_01.add("埔"); toptions2Items1.add(options3Items_01); ArrayList<String> options3Items_02 = new ArrayList<>(); options3Items_02.add("黄埔"); options3Items_02.add("黄"); options3Items_02.add("埔"); toptions2Items1.add(options3Items_02); ArrayList<String> options3Items_03 = new ArrayList<>(); options3Items_03.add("黄埔区"); options3Items_03.add("黄区"); options3Items_03.add("埔区"); toptions2Items2.add(options3Items_03); ArrayList<String> options3Items_04 = new ArrayList<>(); options3Items_04.add(""); toptions2Items2.add(options3Items_04); options3tems.add(toptions2Items1); options3tems.add(toptions2Items2); }