Android 仿IOS3D时间选择器城市选择器

Android  仿IOS3D时间选择器城市选择器  城市数据从数据库读取,可自由添加数据。







实现代码

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.jock.pickerview;  
  2.   
  3. import java.text.SimpleDateFormat;  
  4. import java.util.ArrayList;  
  5. import java.util.Calendar;  
  6. import java.util.Date;  
  7.   
  8. import android.app.Activity;  
  9. import android.os.Bundle;  
  10. import android.os.Handler;  
  11. import android.view.View;  
  12. import android.view.View.OnClickListener;  
  13. import android.widget.TextView;  
  14.   
  15. import com.jock.pickerview.dao.RegionDAO;  
  16. import com.jock.pickerview.view.OptionsPickerView;  
  17. import com.jock.pickerview.view.TimePickerView;  
  18.   
  19. public class MainActivity extends Activity  
  20. {  
  21.   
  22.     private TextView tvTime, tvOptions;  
  23.     TimePickerView pvTime;  
  24.     OptionsPickerView pvOptions;  
  25.   
  26.     static ArrayList<RegionInfo> item1;  
  27.   
  28.     static ArrayList<ArrayList<RegionInfo>> item2 = new ArrayList<ArrayList<RegionInfo>>();  
  29.   
  30.     static ArrayList<ArrayList<ArrayList<RegionInfo>>> item3 = new ArrayList<ArrayList<ArrayList<RegionInfo>>>();  
  31.   
  32.     private Handler handler = new Handler()  
  33.     {  
  34.         public void handleMessage(android.os.Message msg)  
  35.         {  
  36.             System.out.println(System.currentTimeMillis());  
  37.             // 三级联动效果  
  38.   
  39.             pvOptions.setPicker(item1, item2, item3, true);  
  40.             pvOptions.setCyclic(truetruetrue);  
  41.             pvOptions.setSelectOptions(000);  
  42.             tvOptions.setClickable(true);  
  43.         };  
  44.     };  
  45.   
  46.     @SuppressWarnings("unchecked")  
  47.     @Override  
  48.     protected void onCreate(Bundle savedInstanceState)  
  49.     {  
  50.         super.onCreate(savedInstanceState);  
  51.         setContentView(R.layout.activity_main);  
  52.   
  53.         tvTime = (TextView) findViewById(R.id.tvTime);  
  54.   
  55.         tvOptions = (TextView) findViewById(R.id.tvOptions);  
  56.   
  57.         // 时间选择器  
  58.         pvTime = new TimePickerView(this, TimePickerView.Type.YEAR_MONTH_DAY);  
  59.         // 控制时间范围  
  60. //       Calendar calendar = Calendar.getInstance();  
  61. //       pvTime.setRange(calendar.get(Calendar.YEAR) - 20,  
  62. //       calendar.get(Calendar.YEAR));  
  63.         pvTime.setTime(new Date());  
  64.         pvTime.setCyclic(false);  
  65.         pvTime.setCancelable(true);  
  66.         // 时间选择后回调  
  67.         pvTime.setOnTimeSelectListener(new TimePickerView.OnTimeSelectListener()  
  68.         {  
  69.   
  70.             @Override  
  71.             public void onTimeSelect(Date date)  
  72.             {  
  73.                 tvTime.setText(getTime(date));  
  74.             }  
  75.         });  
  76.         // 弹出时间选择器  
  77.         tvTime.setOnClickListener(new OnClickListener()  
  78.         {  
  79.   
  80.             @Override  
  81.             public void onClick(View v)  
  82.             {  
  83.                 pvTime.show();  
  84.             }  
  85.         });  
  86.   
  87.         // 选项选择器  
  88.         pvOptions = new OptionsPickerView(this);  
  89.   
  90.         new Thread(new Runnable()  
  91.         {  
  92.   
  93.             @Override  
  94.             public void run()  
  95.             {  
  96.                 // TODO Auto-generated method stub  
  97.                 System.out.println(System.currentTimeMillis());  
  98.                 if (item1 != null && item2 != null && item3 != null)  
  99.                 {  
  100.                     handler.sendEmptyMessage(0x123);  
  101.                     return;  
  102.                 }  
  103.                 item1 = (ArrayList<RegionInfo>) RegionDAO.getProvencesOrCity(1);  
  104.                 for (RegionInfo regionInfo : item1)  
  105.                 {  
  106.                     item2.add((ArrayList<RegionInfo>) RegionDAO.getProvencesOrCityOnParent(regionInfo.getId()));  
  107.   
  108.                 }  
  109.   
  110.                 for (ArrayList<RegionInfo> arrayList : item2)  
  111.                 {  
  112.                     ArrayList<ArrayList<RegionInfo>> list2 = new ArrayList<ArrayList<RegionInfo>>();  
  113.                     for (RegionInfo regionInfo : arrayList)  
  114.                     {  
  115.   
  116.                           
  117.   
  118.                         ArrayList<RegionInfo> q = (ArrayList<RegionInfo>) RegionDAO.getProvencesOrCityOnParent(regionInfo.getId());  
  119.                         list2.add(q);  
  120.   
  121.                     }  
  122.                     item3.add(list2);  
  123.                 }  
  124.   
  125.                 handler.sendEmptyMessage(0x123);  
  126.   
  127.             }  
  128.         }).start();  
  129.         // 设置选择的三级单位  
  130.         // pwOptions.setLabels("省", "市", "区");  
  131.         pvOptions.setTitle("选择城市");  
  132.   
  133.         // 设置默认选中的三级项目  
  134.         // 监听确定选择按钮  
  135.   
  136.         pvOptions.setOnoptionsSelectListener(new OptionsPickerView.OnOptionsSelectListener()  
  137.         {  
  138.   
  139.             @Override  
  140.             public void onOptionsSelect(int options1, int option2, int options3)  
  141.             {  
  142.                 // 返回的分别是三个级别的选中位置  
  143.                 String tx = item1.get(options1).getPickerViewText() + item2.get(options1).get(option2).getPickerViewText() + item3.get(options1).get(option2).get(options3).getPickerViewText();  
  144.                 tvOptions.setText(tx);  
  145.   
  146.             }  
  147.         });  
  148.         // 点击弹出选项选择器  
  149.         tvOptions.setOnClickListener(new View.OnClickListener()  
  150.         {  
  151.   
  152.             @Override  
  153.             public void onClick(View v)  
  154.             {  
  155.                 pvOptions.show();  
  156.             }  
  157.         });  
  158.   
  159.         tvOptions.setClickable(false);  
  160.     }  
  161.   
  162.     public static String getTime(Date date)  
  163.     {  
  164.         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");  
  165.         return format.format(date);  
  166.     }  
  167.   
  168. }  

源码下载


转自:http://blog.csdn.net/u014061684/article/details/50595237

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值