1:课程时间跨度较大时,课程重叠会出现问题
问题描述
当自定义了一个很多的时间段
例如
private String[] DAY_ALL_TIME=new String[]{ "09:00","09:30","10:00","10:30","11:00","11:30", "12:00","12:30","13:00","13:30","14:00","14:30","15:00","15:30", "16:00","16:30","17:00","17:30","18:00","18:30","19:00","19:30", "20:00","20:30","21:00","21:30","22:00","22:30","23:00","23:30" };
填充MySubject数据
例如
`
mySubject1.setStart(DAY_ALL_TIME[6]);//12:00开始
mySubject1.setStep(7);//7节课,到15:00结束
//课程有重叠
mySubject2.setStart(DAY_ALL_TIME[6]);//12:00开始
mySubject2.setStep(7);//7节课,到15:00结束
mySubject3.setStart(DAY_ALL_TIME[12]);//15:00开始
mySubject3.setStep(7);//7节课,到18:00结束
`
最终显示的itemview结果会全部合并到mySubject1 这个里面
看了下源码
引起的原因是由于
ScheduleSupport类下fliterSchedule()方法引起的
if(s.getStart()>=s2.getStart()&&s.getStart()<=(s2.getStart()+s2.getStep()-1)){ is=false; if(isThisWeek(s2,curWeek)){ break; }else if(isThisWeek(s,curWeek)){ result.remove(s2); result.add(s); } }
还有一个错误是重复的角标数字也不对
ScheduleSupport类下findSubjects()方法引起的
for (int i = 0; i < data.size(); i++) { Schedule bean = data.get(i); if (bean.getStart() >= subject.getStart() && bean.getStart() < (subject.getStart() + subject.getStep())) result.add(data.get(i)); }
2.缺少课程动态颜色改变
由于课程有“点名”和“未点名”的类型区分,而且是动态读取的,暂未找到动态设置每一个项的颜色方法
/** * 指定课程的颜色,未指定的课程自动分配 */ public void forColor(){ Map<String,Integer> colorMap=new HashMap<>(); colorMap.put("数字图像处理",Color.RED); colorMap.put("算法分析与设计",Color.BLUE); mTimetableView.colorPool().setIgnoreUserlessColor(false).setColorMap(colorMap); mTimetableView.updateView(); }
这个方法不太理想
@zfman