周次选择栏
https://github.com/zfman/TimetableView
一个开源的、完善的、简洁的课程表控件
周次选择栏WeekView
是控件实现的一个默认的周次选择控件,你可以使用它快速的拥有周次选择功能,TimetableView
是没有周次选择功能的,所以需要两者配合使用。
本节你将掌握使用zfman/TimetableView添加一个周次选择栏
默认的周次选择栏
添加控件
在布局文件中放一个TimetableView
,然后在TimetableView
的上边放一个WeekView
<com.zhuangfei.timetable.view.WeekView
android:id="@+id/id_weekview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<com.zhuangfei.timetable.TimetableView
android:id="@+id/id_timetableView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.zhuangfei.timetable.TimetableView>
2.获取控件
TimetableView mTimetableView;
WeekView weekView;
//获取控件
mTimetableView = findViewById(R.id.id_timetableView);
weekView=findViewById(R.id.id_weekview);
3.设置WeekView
//设置周次选择属性
weekView.setSource(mySubjects)
.setCurWeek(1)
.setOnWeekItemClickedListener(new IWeekView.OnWeekItemClickedListener() {
@Override
public void onWeekClicked(int curWeek) {
mTimetableView.changeWeekOnly(curWeek);
}
})
.setOnWeekLeftClickedListener(new IWeekView.OnWeekLeftClickedListener() {
@Override
public void onWeekLeftClicked() {
Log.d(TAG, "onWeekLeftClicked: ");
onWeekLeftLayoutClicked();
}
})
.showView();
4.设置TimetableView
mTimetableView.setSource(mySubjects)
.setCurWeek(1)
.setCurTerm("大三下学期")
.setOnWeekChangedListener(new ISchedule.OnWeekChangedListener() {
@Override
public void onWeekChanged(int curWeek) {
int size = mTimetableView.getDataSource().size();
titleTextView.setText("第" + curWeek + "周,共" + size + "门课");
}
})
.showView();
5.更新高亮日期
由于在onCreate
中设置了WeekView,所以默认的在WeekView初始化时会计算当前日期,如果程序在后台时间太长(超一天),那么进入页面时会发现日期不正确,所以可以在Activity的onStart
生命周期方法中再次计算日期,设置高亮
@Override
protected void onStart() {
super.onStart();
//更新一下,防止因程序在后台时间过长(超过一天)而导致的高亮不准确问题
//第一次调用时会出异常
try{
mTimetableView.getOnDateBuildListener().onHighLight();
}catch (Exception e){
}
}
自定义周次选择栏
这个没什么可说的,你只需要任意的定制即可,因为它与TimetableView
是没有任何关联的,有问题可以参考WeekView
的实现