全网第二好的Android课程表控件之周次选择栏

周次选择栏

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的实现

猜你喜欢

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