# PickerView **Repository Path**: duanhong169/PickerView ## Basic Information - **Project Name**: PickerView - **Description**: Android滚动选择器(省市区联动选择、日期选择、时间选择) - **Primary Language**: Android - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 65 - **Forks**: 12 - **Created**: 2018-07-17 - **Last Updated**: 2025-03-23 ## Categories & Tags **Categories**: android-modules **Tags**: None ## README # PickerView [![gitHub release](https://img.shields.io/github/release/duanhong169/PickerView.svg?style=social)](https://github.com/duanhong169/PickerView/releases) [![platform](https://img.shields.io/badge/platform-android-brightgreen.svg)](https://developer.android.com/index.html) [![license](https://img.shields.io/badge/license-Apache%202-green.svg)](https://github.com/duanhong169/PickerView/blob/master/LICENSE) [![Build status](https://build.appcenter.ms/v0.1/apps/82a51128-aa71-4c56-9114-4170c51cb899/branches/master/badge)](https://appcenter.ms) Android滚动选择器 ## 使用方法 ### 1. 添加依赖 > 注:${latestVersion}请替换为当前最新版本号,见[releases](https://github.com/duanhong169/PickerView/releases)。 gradle: ```groovy implementation 'com.github.duanhong169:picker-view:${latestVersion}' ``` maven: ```xml com.github.duanhong169 picker-view ${latestVersion} pom ``` ### 2. 集成到项目中 #### 2.1 集成PickerView 添加到layout文件中: ```xml ``` ##### 使用列表作为数据源 ```java List 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作为数据源 配置数据源: ```java PickerView.Adapter adapter = new PickerView.Adapter() { @Override public int getItemCount() { return 42; } @Override public String getText(int index) { return "Item " + index; } }; pickerView.setAdapter(adapter); ``` 监听选择事件: ```java pickerView.setOnSelectedItemChangedListener((pickerView, previousPosition, selectedItemPosition) -> textView.setText(pickerView.getAdapter().getText(selectedItemPosition))); ``` #### 2.2 集成DivisionPickerView 添加到layout文件中: ```xml ``` 构建省市区数据源: > 参考[Divisions.java](app/src/main/java/top/defaults/pickerviewapp/Divisions.java) 设置数据源并监听选择事件 ```java final List divisions = Divisions.get(this); divisionPicker.setDivisions(divisions); divisionPicker.setOnSelectedDateChangedListener(division -> textView.setText(Division.Helper.getCanonicalName(division))); ``` #### 2.3 集成DateTimePickerView 添加到layout文件中: ```xml ``` 设置初始日期: ```java dateTimePickerView.setStartDate(Calendar.getInstance()); // 注意:月份是从0开始计数的 dateTimePickerView.setSelectedDate(new GregorianCalendar(2017, 6, 27, 21, 30)); ``` 监听选择事件: ```java 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); } }); ``` 更详细的使用方法请参见示例。 ## License 请查看[LICENSE](./LICENSE)文件。