11package com .bigkoo .pickerview .view ;
22
3+ import android .util .Log ;
34import android .view .View ;
45
56import com .bigkoo .pickerview .R ;
@@ -388,13 +389,21 @@ private void setSolar(int year, final int month, int day, int h, int m, int s) {
388389 wv_hours .setGravity (gravity );
389390 //分
390391 wv_minutes = (WheelView ) view .findViewById (R .id .min );
391- wv_minutes .setAdapter (new NumericWheelAdapter (0 , endMinute ));
392+ if (year < endYear || month + 1 < endMonth || day < endDay || h < endHour || m < endMinute ) {
393+ wv_minutes .setAdapter (new NumericWheelAdapter (0 , DEFAULT_END_SECOND ));
394+ } else {
395+ wv_minutes .setAdapter (new NumericWheelAdapter (0 , endMinute ));
396+ }
392397
393398 wv_minutes .setCurrentItem (m );
394399 wv_minutes .setGravity (gravity );
395400 //秒
396401 wv_seconds = (WheelView ) view .findViewById (R .id .second );
397- wv_seconds .setAdapter (new NumericWheelAdapter (0 , endSecond ));
402+ if (year < endYear || month + 1 < endMonth || day < endDay || h < endHour || m < endMinute || s < endSecond ) {
403+ wv_seconds .setAdapter (new NumericWheelAdapter (0 , DEFAULT_END_SECOND ));
404+ } else {
405+ wv_seconds .setAdapter (new NumericWheelAdapter (0 , endSecond ));
406+ }
398407
399408 wv_seconds .setCurrentItem (s );
400409 wv_seconds .setGravity (gravity );
@@ -603,8 +612,8 @@ private void setReDay(int year_num, int monthNum, int startD, int endD, List<Str
603612
604613 if (currentItem > wv_day .getAdapter ().getItemsCount () - 1 ) {
605614 currentItem = wv_day .getAdapter ().getItemsCount () - 1 ;
606- wv_day .setCurrentItem (currentItem );
607615 }
616+ wv_day .setCurrentItem (currentItem );
608617 }
609618
610619 private void setReHour () {
@@ -616,12 +625,15 @@ private void setReHour() {
616625 int month = calendar .get (Calendar .MONTH ) + 1 ;
617626 int day = calendar .get (Calendar .DAY_OF_MONTH );
618627
628+ int position = wv_hours .getCurrentItem ();
619629 if (year < endYear || month < endMonth || day < endDay ) {
620630 wv_hours .setAdapter (new NumericWheelAdapter (0 , DEFAULT_END_HOUR ));
621631 } else {
622632 wv_hours .setAdapter (new NumericWheelAdapter (0 , endHour ));
623- wv_hours .setCurrentItem (wv_hours .getMaxValue ());
624633 }
634+
635+ wv_hours .setCurrentItem (Math .min (position , wv_hours .getItemsCount () - 1 ));
636+
625637 setReMinute ();
626638 } catch (ParseException e ) {
627639 e .printStackTrace ();
@@ -638,12 +650,13 @@ private void setReMinute() {
638650 int day = calendar .get (Calendar .DAY_OF_MONTH );
639651 int h = calendar .get (Calendar .HOUR_OF_DAY );
640652
653+ int position = wv_minutes .getCurrentItem ();
641654 if (year < endYear || month < endMonth || day < endDay || h < endHour ) {
642655 wv_minutes .setAdapter (new NumericWheelAdapter (0 , DEFAULT_END_MINUTE ));
643656 } else {
644657 wv_minutes .setAdapter (new NumericWheelAdapter (0 , endMinute ));
645- wv_minutes .setCurrentItem (wv_minutes .getMaxValue ());
646658 }
659+ wv_minutes .setCurrentItem (Math .min (position , wv_minutes .getItemsCount () - 1 ));
647660 setReSecond ();
648661 } catch (ParseException e ) {
649662 e .printStackTrace ();
@@ -660,12 +673,13 @@ private void setReSecond() {
660673 int day = calendar .get (Calendar .DAY_OF_MONTH );
661674 int h = calendar .get (Calendar .HOUR_OF_DAY );
662675 int m = calendar .get (Calendar .MINUTE );
676+ int position = wv_seconds .getCurrentItem ();
663677 if (year < endYear || month < endMonth || day < endDay || h < endHour || m < endMinute ) {
664678 wv_seconds .setAdapter (new NumericWheelAdapter (0 , DEFAULT_END_SECOND ));
665679 } else {
666680 wv_seconds .setAdapter (new NumericWheelAdapter (0 , endSecond ));
667- wv_seconds .setCurrentItem (wv_seconds .getMaxValue ());
668681 }
682+ wv_seconds .setCurrentItem (Math .min (position , wv_seconds .getItemsCount () - 1 ));
669683 } catch (ParseException e ) {
670684 e .printStackTrace ();
671685 }
0 commit comments