Android 滚动选择器 PickerView

Apache
Java
Android
2018-07-17
段弘
PickerView 正在参加 2019 年度最受欢迎开源中国软件评选,请投票支持!
PickerView 在 2019 年度最受欢迎开源中国软件评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票赢奖品
已投票

PickerView

Android滚动选择器(支持省市区联动选择、日期选择、时间选择)。

使用方法

1. 添加依赖

注:${latestVersion}请替换为当前最新版本号,见releases

gradle:

implementation 'com.github.duanhong169:picker-view:${latestVersion}'

maven:

<dependency>
	<groupId>com.github.duanhong169</groupId>
	<artifactId>picker-view</artifactId>
	<version>${latestVersion}</version>
	<type>pom</type>
</dependency>

2. 集成到项目中

2.1 集成PickerView

添加到layout文件中:

<top.defaults.view.PickerView
	android:id="@+id/pickerView"
	android:layout_width="match_parent"
	android:layout_height="wrap_content"/>

使用列表作为数据源

List<Item> items = new ArrayList<>();
for (int i = 0; i < 42; i++) {
    items.add(new Item("Item " + i));
}

pickerView.setItems(Item.sampleItems(), item -> textView.setText(item.getText()));

实现Adapter作为数据源

配置数据源:

PickerView.Adapter adapter = new PickerView.Adapter() {

    @Override
    public int getItemCount() {
        return 42;
    }

    @Override
    public String getText(int index) {
        return "Item " + index;
    }
};
pickerView.setAdapter(adapter);

监听选择事件:

pickerView.setOnSelectedItemChangedListener((pickerView, previousPosition, selectedItemPosition) -> 
        textView.setText(pickerView.getAdapter().getText(selectedItemPosition)));

2.2 集成DivisionPickerView

添加到layout文件中:

<top.defaults.view.DivisionPickerView
    android:id="@+id/divisionPicker"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:preferredMaxOffsetItemCount="4"
    android:background="#e7e7e7"/>

构建省市区数据源:

参考Divisions.java

设置数据源并监听选择事件

final List<DivisionModel> divisions = Divisions.get(this);
divisionPicker.setDivisions(divisions);
divisionPicker.setOnSelectedDateChangedListener(division -> textView.setText(Division.Helper.getCanonicalName(division)));

2.3 集成DateTimePickerView

添加到layout文件中:

<top.defaults.view.DateTimePickerView
    android:id="@+id/datePickerView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:preferredMaxOffsetItemCount="3"
    app:textSize="18sp"
    app:type="dateTime"
    app:minutesInterval="fifteen"
    app:curved="true"
    android:background="#e7e7e7"/>

设置初始日期:

dateTimePickerView.setStartDate(Calendar.getInstance());
// 注意:月份是从0开始计数的
dateTimePickerView.setSelectedDate(new GregorianCalendar(2017, 6, 27, 21, 30));

监听选择事件:

dateTimePickerView.setOnSelectedDateChangedListener(new DateTimePickerView.OnSelectedDateChangedListener() {
    @Override
    public void onSelectedDateChanged(Calendar date) {
        int year = date.get(Calendar.YEAR);
        int month = date.get(Calendar.MONTH);
        int dayOfMonth = date.get(Calendar.DAY_OF_MONTH);
        int hour = date.get(Calendar.HOUR_OF_DAY);
        int minute = date.get(Calendar.MINUTE);
        String dateString = String.format(Locale.getDefault(), "%d年%02d月%02d日%02d时%02d分", year, month + 1, dayOfMonth, hour, minute);
        textView.setText(dateString);
        Log.d(TAG, "new date: " + dateString);
    }
});

更详细的使用方法请参见示例。

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

UIPikerView用法总结

1. numberOfComponents:返回UIPickerView当前的列数 NSInteger num = _pickerView.numberOfComponents; NSLog( @"%d", num); 2. - (NSInteger)numberOfRowsInComponent:(NSInteger)compone...

2015/04/04 01:29
15
0
iOS选择器视图控件(UIPickerView)使用方法总结

iOS中UIPickerView的使用总结

2015/06/10 15:57
632
0
UIPickerview循环滚动

最近有一个需求,需要UIPickerview循环滚动.但是我找了很多的例子,发现都不是循环滚动的.最终结合百度和自己的理解,总结出了一个方法.

2015/11/09 18:08
1K
0
UIPikeerVIew

##搭建界面
 - 注意点:PickerView的高度不能改,默认162,PickerView里面每行的高度 可以改,不要弄混淆了。 - pickerView显示数据 - 
1> 如何使用PickerView展示数据? 进入PickerView头文件,...

2016/05/30 16:03
10
0
UIPickerView改变字体大小

// // ViewController.m // UIPickerView改变字体大小 // // Created by dc008 on 15/12/8. // Copyright © 2015年 CXY. All rights reserved. // #import "ViewController.h" #import "MyV...

2015/12/08 17:33
216
0
UIPickerView

UIPickerView常见属性,方法,以及数据源方法,代理方法

2014/10/11 20:18
33
0
iOS开发之UIPickerView

1、使用方法 UIPickerView使用和UITableView大致类似。首先设置ViewController为数据源,然后遵守数据源协议< UIPickerViewDataRecouce>,之后实现协议中的方法: 一共有多少列: - (NSInteg...

2015/08/31 20:51
14
0
UIPickerView城市选择小Demo

重在理解原理

2016/03/12 11:51
73
2
UIDatePicker和UIPickerView

UIPickerView UIPickerView控件也是iPhone中比较常用到的一个控件,它通过转界面提供一系列多值选项,它向用户显示信息,也收集用户输入。 UIPickerView里⾯的组件数和组件里的 要使用UIPickerV...

2015/11/13 17:29
41
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部