@@ -286,11 +286,7 @@ public void onSelected(boolean isUserScroll, int selectedIndex, String item) {
286286 //需要根据年份及月份动态计算天数
287287 int year = DateUtils .trimZero (item );
288288 changeDayData (year , changeMonthData (year ));
289- if (selectedMonthIndex == 0 ) {
290- monthView .setItems (months );
291- } else {
292- monthView .setItems (months , selectedMonthIndex );
293- }
289+ monthView .setItems (months , selectedMonthIndex );
294290 dayView .setItems (days , selectedDayIndex );
295291 }
296292 });
@@ -317,11 +313,7 @@ public void onSelected(boolean isUserScroll, int selectedIndex, String item) {
317313 if (!TextUtils .isEmpty (dayLabel )) {
318314 dayTextView .setText (dayLabel );
319315 }
320- if (selectedDayIndex == 0 ) {
321- dayView .setItems (days );
322- } else {
323- dayView .setItems (days , selectedDayIndex );
324- }
316+ dayView .setItems (days , selectedDayIndex );
325317 dayView .setOnWheelViewListener (new WheelView .OnWheelViewListener () {
326318 @ Override
327319 public void onSelected (boolean isUserScroll , int selectedIndex , String item ) {
@@ -348,38 +340,39 @@ private void changeYearData() {
348340 }
349341
350342 private int changeMonthData (int year ) {
343+ String preSelectMonth = months .size () > selectedMonthIndex ? months .get (selectedMonthIndex ) : null ;
351344 months .clear ();
352345 if (year == startYear ) {
353346 for (int i = startMonth ; i <= 12 ; i ++) {
354347 months .add (DateUtils .fillZero (i ));
355348 }
356- selectedMonthIndex = 0 ;
357349 } else if (year == endYear ) {
358350 for (int i = 1 ; i <= endMonth ; i ++) {
359351 months .add (DateUtils .fillZero (i ));
360352 }
361- selectedMonthIndex = 0 ;
362353 } else {
363354 for (int i = 1 ; i <= 12 ; i ++) {
364355 months .add (DateUtils .fillZero (i ));
365356 }
366357 }
358+ selectedMonthIndex = (preSelectMonth == null || !months .contains (preSelectMonth )) ? 0 : months .indexOf (preSelectMonth );
367359 return DateUtils .trimZero (months .get (selectedMonthIndex ));
368360 }
369361
370362 private void changeDayData (int year , int month ) {
363+ String preSelectDay = days .size () > selectedDayIndex ? days .get (selectedDayIndex ) : null ;
371364 days .clear ();
372365 int maxDays = DateUtils .calculateDaysInMonth (year , month );
373366 if (year == startYear && month == startMonth ) {
374367 for (int i = startDay ; i <= maxDays ; i ++) {
375368 days .add (DateUtils .fillZero (i ));
376369 }
377- selectedDayIndex = 0 ;
370+ selectedDayIndex = ( preSelectDay == null || ! days . contains ( preSelectDay )) ? 0 : days . indexOf ( preSelectDay ) ;
378371 } else if (year == endYear && month == endMonth ) {
379372 for (int i = 1 ; i <= endDay ; i ++) {
380373 days .add (DateUtils .fillZero (i ));
381374 }
382- selectedDayIndex = 0 ;
375+ selectedDayIndex = ( preSelectDay == null || ! days . contains ( preSelectDay )) ? 0 : days . indexOf ( preSelectDay ) ;
383376 } else {
384377 for (int i = 1 ; i <= maxDays ; i ++) {
385378 days .add (DateUtils .fillZero (i ));
0 commit comments