Closed ftevxk closed 4 years ago
setRangDate设置结束日期在今天,使用TimePickerView切换农历月份是12个月没有被限制
请问你这边解决了吗?我现在也遇到同样的问题,自己改农历这块好像挺复杂
@
setRangDate设置结束日期在今天,使用TimePickerView切换农历月份是12个月没有被限制
请问你这边解决了吗?我现在也遇到同样的问题,自己改农历这块好像挺复杂
我把源码弄下来改了 这两处,注释掉的是原代码
@
setRangDate设置结束日期在今天,使用TimePickerView切换农历月份是12个月没有被限制
请问你这边解决了吗?我现在也遇到同样的问题,自己改农历这块好像挺复杂
我把源码弄下来改了 这两处,注释掉的是原代码
只改这两个地方还差得很远啊 初始化setLunar的时候 年月日都要做对应限制 年月日变化的时候也要联动限制 不过还是非常感谢你!!!
@
setRangDate设置结束日期在今天,使用TimePickerView切换农历月份是12个月没有被限制
请问你这边解决了吗?我现在也遇到同样的问题,自己改农历这块好像挺复杂
我把源码弄下来改了 这两处,注释掉的是原代码
只改这两个地方还差得很远啊 初始化setLunar的时候 年月日都要做对应限制 年月日变化的时候也要联动限制 不过还是非常感谢你!!!
主要是在切换农历时有重新设置一下adapter,目前项目只要求限制到今天就直接魔改项目代码了,你可以大概参考一下思路
private static void setSolarAdapter(WheelView yearWheel, WheelView monthWheel, WheelView dayWheel, WheelView hourWheel) {
hourWheel.setAdapter(new NumericWheelAdapter(0, 23) {
Calendar cal = Calendar.getInstance();
@Override
public int getItemsCount() {
if (yearWheel.getCurrentItem() == yearWheel.getItemsCount() - 1) {
return cal.get(Calendar.HOUR_OF_DAY);
} else {
return super.getItemsCount();
}
}
});
}
private static void setLunarAdapter(WheelView yearWheel, WheelView monthWheel, WheelView dayWheel, WheelView hourWheel) {
Calendar cal = Calendar.getInstance();
//只有在今年才需要限定最大月日
int[] lunar = LunarCalendar.solarToLunar(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH));
int lunarYear = lunar[0];
int lunarMonth = lunar[1] - 1;
int lunarDay = lunar[2];
int leapMonth = ChinaDate.leapMonth(lunarYear);
boolean isLeap = lunar[3] == 1;
yearWheel.setOnItemSelectedListener(index -> {
if (index == yearWheel.getItemsCount() - 1) {
monthWheel.setCurrentItem(0);
dayWheel.setCurrentItem(0);
hourWheel.setCurrentItem(0);
}
setLunarAdapter(yearWheel, monthWheel, dayWheel, hourWheel);
});
//限定农历月份最大只能选到当月
List<String> monthList;
if (leapMonth != 0 && (lunarMonth > leapMonth - 1 || isLeap)) {
//选中月是闰月或大于闰月
if (yearWheel.getCurrentItem() == yearWheel.getItemsCount() - 1) {
monthList = ChinaDate.getMonths(lunarYear).subList(0, lunarMonth + 2);
} else {
monthList = ChinaDate.getMonths(lunarYear);
}
} else {
if (yearWheel.getCurrentItem() == yearWheel.getItemsCount() - 1) {
monthList = ChinaDate.getMonths(lunarYear).subList(0, lunarMonth + 1);
} else {
monthList = ChinaDate.getMonths(lunarYear);
}
}
monthWheel.setAdapter(new ArrayWheelAdapter(monthList));
//限定农历天数最大只能选到今天
List<String> dayList;
if (ChinaDate.leapMonth(lunarYear) == 0) {
if (yearWheel.getCurrentItem() == yearWheel.getItemsCount() - 1) {
monthWheel.onItemSelected();
dayList = ChinaDate.getLunarDays(ChinaDate.monthDays(lunarYear, leapMonth)).subList(0, lunarDay - 1);
} else {
dayList = ChinaDate.getLunarDays(ChinaDate.monthDays(lunarYear, leapMonth));
}
} else {
//闰年
if (yearWheel.getCurrentItem() == yearWheel.getItemsCount() - 1) {
monthWheel.onItemSelected();
dayList = ChinaDate.getLunarDays(ChinaDate.leapDays(lunarYear)).subList(0, lunarDay - 1);
} else {
dayList = ChinaDate.getLunarDays(ChinaDate.leapDays(lunarYear));
}
}
dayWheel.setAdapter(new ArrayWheelAdapter(dayList));
}
setRangDate设置结束日期在今天,使用TimePickerView切换农历月份是12个月没有被限制