基础功能
https://github.com/zfman/TimetableView
一个开源的、完善的、简洁的课程表控件
本节你将掌握如何使用TimetableView来搭建自己的课表界面
这里使用的版本为2.0.1
,可能它不是最新的,请在此查看最新版本
概述
本节你将掌握如何使用本控件搭建自己的课表界面。这里使用的版本为2.0.1
,可能它不是最新的,请在此查看最新版本
使用控件
Step1:添加依赖
Gradle
compile 'com.zhuangfei:TimetableView:2.0.1'
Maven
<dependency>
<groupId>com.zhuangfei</groupId>
<artifactId>TimetableView</artifactId>
<version>2.0.1</version>
<type>pom</type>
</dependency>
Step2:添加控件
该控件包含的基础组件有日期栏、侧边栏、课表视图,在布局文件中加入如下代码后会包含这三个基础组件
<com.zhuangfei.timetable.TimetableView
android:id="@+id/id_timetableView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.zhuangfei.timetable.TimetableView>
Step3:配置属性
使用如下方式获取到控件
TimetableView mTimetableView = findViewById(R.id.id_timetableView);
属性的设置分为两类:与课程项构建有关的、与全局有关的,前者的配置在ScheduleManager
对象中,后者的配置在TimetableView
中,所有配置信息需要在showView()
调用前完成,否则无效
以下代码用来监听课程项点击事件:
mTimetableView.getScheduleManager()
.setOnItemClickListener(new ISchedule.OnItemClickListener() {
@Override
public void onItemClick(View v, List<Schedule> scheduleList) {
display(scheduleList);
}
});
然后设置它的一些全局属性,最后调用showView()
用来创建和显示课表视图,代码如下:
mTimetableView.setSource(mySubjects)
.setCurWeek(1)
.setCurTerm("大三下学期")
.showView();
至此,课表已经可以显示在视图上了,你可能会问:设置数据源时mySubjects
是什么?不要着急,继续看…
数据源设置
数据源的设置方式有两种,以下分别来介绍:
方法1:使用指定的格式List<Schedule>
,Schedule
是控件提供的课程实体类,你可以将自己的数据封装为指定格式,然后进行如下配置即可
mTimetableView.setData(scheduleList)
.setCurWeek(1)
.setCurTerm("大三下学期")
.showView();
方法2:方法1在很多场景下都满足不了需求,往往需要定义自己的课程实体类,你可以跟随以下几个步骤来使用它
- 创建自定义的实体类并实现
ScheduleEnable
接口
public class MySubject implements ScheduleEnable {
//省略属性、setter、getter、构造函数
@Override
public Schedule getSchedule() {
Schedule schedule=new Schedule();
schedule.setDay(getDay());
schedule.setName(getName());
schedule.setRoom(getRoom());
schedule.setStart(getStart());
schedule.setStep(getStep());
schedule.setTeacher(getTeacher());
schedule.setWeekList(getWeekList());
schedule.setColorRandom(2);
return schedule;
}
}
- 使用
setSource()
设置
//模拟获取课程数据:自定义格式
List<MySubject> mySubjects = SubjectRepertory.loadDefaultSubjects();
//设置数据源并显示
mTimetableView.setSource(mySubjects)
.setCurWeek(1)
.setCurTerm("大三下学期")
.showView();
可见,上述那个例子使用的是方法2,我个人也建议使用方法2:比较灵活,可根据具体情况选择。简单几步,课表界面就可以显示出来了,是不是有点小激动呀。
修改数据源
删除课程
/**
* 删除课程
* 内部使用集合维护课程数据,操作集合的方法来操作它即可
* 最后更新一下视图(全局更新)
*/
protected void deleteSubject() {
int size = mTimetableView.getDataSource().size();
int pos = (int) (Math.random() * size);
if (size > 0) {
mTimetableView.getDataSource().remove(pos);
mTimetableView.updateView();
}
}
添加课程
/**
* 添加课程
* 内部使用集合维护课程数据,操作集合的方法来操作它即可
* 最后更新一下视图(全局更新)
*/
protected void addSubject() {
int size = mTimetableView.getDataSource().size();
if (size > 0) {
Schedule schedule = mTimetableView.getDataSource().get(0);
mTimetableView.getDataSource().add(schedule);
mTimetableView.updateView();
}
}