PickerView制作省份、城市选择

这篇博客详细介绍了如何利用PickerView组件在iOS开发中创建一个完整的省市区选择功能,包括数据源设置、选择器轮播逻辑以及用户交互处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);


    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值