Android PickerView的简单使用

Posted 南千元

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android PickerView的简单使用相关的知识,希望对你有一定的参考价值。

PickerView简单使用

简介

PickerView,android滚动选择器。最近在学习过程中有些许经验,在此与大家分享。此控件在设置时间、选择地区等方面,对用户有较好的使用体验,并且易于实现使用方便。

导入依赖

implementation'com.contrarywind:Android-PickerView:4.1.9'

代码调用

PickerView可以不用在xml文件中增加控件,可以直接通过java代码进行使用。PickerView封装了两种选择器。

第一种:TimePickerView

时间选择器,以下代码节选自PickerView的Github仓库

TimePickerView pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() 
    @Override
    public void onTimeSelect(Date date, View v) 
        tv_pickerview.setText(getTime(date));
    
)
        .setTimeSelectChangeListener(new OnTimeSelectChangeListener() 
            @Override
            public void onTimeSelectChanged(Date date) 
            
            
        )
        .setType(new boolean[]true, true, true, true, true, true)
        .setItemVisibleCount(6)
        .setLineSpacingMultiplier(2.0f)
        .isAlphaGradient(true)
        .build();
pvTime.show()

getTime()方法

private String getTime(Date date) 
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    return format.format(date);

效果图:

第二种:OptionsPickerView

可自定义的选择器,使用方法也很简单
首先:创建数据项,每个数据项为一个列表,每多定义一个项就要多嵌套一层

private final List<String> options1Items = new ArrayList<>();
private final List<List<String>> options2Items = new ArrayList<>();
private final List<List<List<String>>> options3Items = new ArrayList<>();

添加数据(重点)

 private void initData() 
        //加入第一个列表数据
        options1Items.add(getResources().getString(R.string.morning));
        options1Items.add(getResources().getString(R.string.afternoon));

        List<String> a = new ArrayList<>();
        List<String> b = new ArrayList<>();
        List<List<String>> c = new ArrayList<>();
        
        //创建最后一个列表数据(分)
        for (int i = 0; i < 60; i++) 
            if (i < 10) 
                a.add("0" + i + "分");
             else 
                a.add(i + "分");
            
        
        
        //创建第二个列表数据(时),同时将最后一个列表数据加入c,加入次数为第二个列表的大小
        for (int i = 0; i <= 12; i++) 
            if (i < 10) 
                b.add("0" + i + "时");
             else 
                b.add(i + "时");
            
            c.add(a);
        
        
        //将第二个列表数据加入options2Itmes,加入次数为options1Items的大小
        for (int j = 0; j < options1Items.size(); j++) 
            options2Items.add(b);    
        
        
        //将第三个列表数据加入options3Items,加入次数为第二个列表数据的长度
        for (int i = 0; i < b.size(); i++) 
            options3Items.add(c);
        
    

通过show()方法来控制显示

OptionsPickerView pvOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() 
            @Override
            public void onOptionsSelect(int options1, int options2, int options3, View v) 
                String date = options1Items.get(options1) + " " + options2 + "时 " + options3 + "分";
                //在此获取选择到的内容
            
        )
                .setTitleText("选择时间")
                .setContentTextSize(16)
                .build();

        pvOptions.setPicker(options1Items, options2Items, options3Items);
        pvOptions.show();

效果图:

最后

OptionsPickerView相对与TimePickerView来说麻烦一点,但是却有很大的调节空间,添加数据的感觉就像是数据结构中的树结构一样,由第一个列表的大小决定一开始有多少点,在每个点上又有各自的分叉,但是分叉的数量却是由开发者自行定义,对于地区选择来说,感觉会更明显。

以上是关于Android PickerView的简单使用的主要内容,如果未能解决你的问题,请参考以下文章

Android PickerView的简单使用

基于Android-PickerView的三级联动城市选择器使用

谈谈-Android-PickerView系列之介绍与使用

Android模拟iOS的PickerView并且附带全国所有省城市地区三级目录

Android中选择器PickerView(第三方控件)的使用2----省市区选择

谈谈-Android-PickerView系列之源码解析