Skip to content

Commit de697bd

Browse files
Merge pull request gzu-liyujiang#45 from msdx/FixSelectDateBug
Fix gzu-liyujiang#44 that could not select the date of the start year or end year.
2 parents 96a49ec + 1474bdb commit de697bd

1 file changed

Lines changed: 7 additions & 14 deletions

File tree

  • library/WheelPicker/src/main/java/cn/qqtheme/framework/picker

library/WheelPicker/src/main/java/cn/qqtheme/framework/picker/DatePicker.java

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)