全网第二好的Android课程表控件之基础功能

基础功能

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();
        }
    }

猜你喜欢

转载自blog.csdn.net/lzhuangfei/article/details/80744250