Android-PickerView的使用

项目地址:https://github.com/Bigkoo/Android-PickerView

一.项目导入

//第三方多级联动
implementation 'com.contrarywind:Android-PickerView:4.1.9'

二.时间选择器

2.1普通使用

        //时间选择器
        TimePickerView pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date, View v) {
                LogUtils.v(TimeUtil.dateToString(date));
            }
        }).build();
        pvTime.show();
    /**
     * @author Longchengbin
     * @description date转字符串
     * @since 2020-10-10 16:00
     **/
    public static String dateToString(Date date) {
        SimpleDateFormat format = new SimpleDateFormat(DateKeys.KEY_YYMMDDHHMMSS, Locale.getDefault());
        return format.format(date);
    }
    public static final String KEY_YYMMDDHHMMSS = "yyyy-MM-dd HH:mm:ss";

2.2进阶使用

        //时间选择器当前选择时间,起始选择时间,终止选择时间
        Calendar selectedDate = Calendar.getInstance();
        Calendar startDate = Calendar.getInstance();
        Calendar endDate = Calendar.getInstance();

        //正确设置方式 原因:注意事项有说明
        startDate.set(1990,0,1);
        endDate.set(2020,11,31);
        selectedDate.set(1992,10,17);

        TimePickerView  pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
            @Override
            public void onTimeSelect(Date date,View v) {//选中事件回调
                LogUtils.v(TimeUtil.dateToString(date));
            }
        })
//                .setType(new boolean[]{true, true, true, true, true, true})// 默认显示年月日
                .setCancelText("Cancel")//取消按钮文字
                .setSubmitText("Sure")//确认按钮文字
                .setContentTextSize(18)//滚轮文字大小
                .setTitleSize(20)//标题文字大小
                .setTitleText("Title")//标题文字
                .setOutSideCancelable(false)//点击屏幕,点在控件外部范围时,是否取消显示
                .isCyclic(true)//是否循环滚动
                .setTitleColor(Color.BLACK)//标题文字颜色
//                .setSubmitColor(Color.BLUE)//确定按钮文字颜色
//                .setCancelColor(Color.BLUE)//取消按钮文字颜色
//                .setTitleBgColor(0xFF666666)//标题背景颜色 Night mode
//                .setBgColor(0xFF333333)//滚轮背景颜色 Night mode
                .setDate(selectedDate)// 如果不设置的话,默认是系统时间*/
                .setRangDate(startDate,endDate)//起始终止年月日设定
                .setLabel("年","月","日","时","分","秒")//默认设置为年月日时分秒
                .isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
//                .isDialog(true)//是否显示为对话框样式
                .build();
        pvTime.show();

2.3注意事项

  • 注意:当我们进行设置时间的启始位置时,需要特别注意月份的设定
  • 原因:Calendar组件内部的月份,是从0开始的,即0-11代表1-12月份
  • 错误使用案例: startDate.set(2013,1,1);  endDate.set(2020,12,1);
  • 正确使用案例: startDate.set(2013,0,1);  endDate.set(2020,11,1);

三.条件选择器

2.1普通使用

 OptionsPickerView pvOptions = new OptionsPickerBuilder(MainActivity.this, new OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int option2, int options3 ,View v) {
                //返回的分别是三个级别的选中位置
                String tx = options1Items.get(options1).getPickerViewText()
                        + options2Items.get(options1).get(option2)
                        + options3Items.get(options1).get(option2).get(options3).getPickerViewText();
                tvOptions.setText(tx);
            }
        }).build();
 pvOptions.setPicker(options1Items, options2Items, options3Items);
 pvOptions.show(); 

2.2进阶使用

//初始化数据
        List<String> carTypeBig = DataUtil.getCarTypeBig(this);
        List<List<String>> carType = DataUtil.getCarType(this);
        OptionsPickerView pickerView = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
            @Override //用户选择后的回调
            public void onOptionsSelect(int options1, int options2, int options3, View v) {
                LogUtils.v(carTypeBig.get(options1) + ""+carType.get(options1).get(options2)
 + " " + options3);
            }//用户滚动时的监听
        }).setOptionsSelectChangeListener(new OnOptionsSelectChangeListener() {
            @Override
            public void onOptionsSelectChanged(int options1, int options2, int options3) {
                String str = "options1: " + options1 + "\noptions2: " 
+ options2 + "\noptions3: " + options3;
                LogUtils.i(str);
            }
        })
                .setSubmitText("确定")//确定按钮文字
                .setCancelText("取消")//取消按钮文字
                .setTitleText("车辆类型选择")//标题
                .setSubCalSize(18)//确定和取消文字大小
                .setTitleSize(20)//标题文字大小
//                .setTitleColor(Color.BLACK)//标题文字颜色
//                .setSubmitColor(Color.BLUE)//确定按钮文字颜色
//                .setCancelColor(Color.BLUE)//取消按钮文字颜色
//                .setTitleBgColor(0xFF333333)//标题背景颜色 Night mode
//                .setBgColor(0xFF000000)//滚轮背景颜色 Night mode
                .setContentTextSize(16)//滚轮文字大小
//                .setLinkage(false)//设置是否联动,默认true
//                .setLabels("xx", "yy", "qq")//设置选择的三级单位
                .isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
                .setCyclic(false, false, false)//循环与否
                .setSelectOptions(0, 0)  //设置默认选中项
                .setOutSideCancelable(false)//点击外部dismiss 默认 true
                .isDialog(true)//是否显示为对话框样式
                .isRestoreItem(true)//切换时是否还原,设置默认选中第一项。
                .build();
        pickerView.show();
        //pickerView 设置数据
        pickerView.setPicker(carTypeBig, carType);

2.3数据添加

 /**
     * @author Longchengbin
     * @description 获取车辆类型大类
     * @since 2020-10-14 14:27
     **/
    public static List<String> getCarTypeBig(Context context) {
        if (context == null) {
            return null;
        }
        String[] stringArray = context.getResources().getStringArray(R.array.car_type_list);
        return Arrays.asList(stringArray);
    }

    /**
     * @author Longchengbin
     * @description 获取车辆类型小类
     * @since 2020-10-14 14:28
     **/
    public static List<List<String>> getCarType(Context context) {
        if (context == null) {
            return null;
        }
        List<List<String>> carTypeBList = new ArrayList<>();
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.small_passenger_car_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.middle_passenger_car_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.large_passenger_car_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.micro_passenger_car_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.micro_trucks_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.light_trucks_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.medium_trucks_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.heavy_trucks_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.special_car_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.low_speed_truck_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.heavy_semi_trailer_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.medium_semi_trailer_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.light_semi_trailer_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.tram_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.heavy_all_trailer_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.medium_all_trailer_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.light_all_trailer_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.mechanical_cars_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.motorcycle_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.tricycle_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.tractor_list)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.farm_tractor_list)));
        List<String> strings = new ArrayList<>();
        strings.add("其他车");
        carTypeBList.add(strings);
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.wxbg)));
        carTypeBList.add(Arrays.asList(context.getResources().getStringArray(R.array.wxqg)));

        return carTypeBList;

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值