|  | @@ -1,8 +1,12 @@
 | 
	
		
			
				|  |  |  package com.cooleshow.teacher.ui.course;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import android.text.TextUtils;
 | 
	
		
			
				|  |  |  import android.view.View;
 | 
	
		
			
				|  |  |  import android.widget.TextView;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.bigkoo.pickerview.builder.TimePickerBuilder;
 | 
	
		
			
				|  |  | +import com.bigkoo.pickerview.listener.CustomListener;
 | 
	
		
			
				|  |  | +import com.bigkoo.pickerview.view.TimePickerView;
 | 
	
		
			
				|  |  |  import com.chad.library.adapter.base.listener.OnLoadMoreListener;
 | 
	
		
			
				|  |  |  import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 | 
	
		
			
				|  |  |  import com.cooleshow.base.utils.LogUtils;
 | 
	
	
		
			
				|  | @@ -22,20 +26,25 @@ import com.cooleshow.teacher.presenter.course.SparringCoursePresenter;
 | 
	
		
			
				|  |  |  import com.scwang.smart.refresh.layout.api.RefreshLayout;
 | 
	
		
			
				|  |  |  import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import java.util.Calendar;
 | 
	
		
			
				|  |  | +import java.util.Date;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  import androidx.annotation.NonNull;
 | 
	
		
			
				|  |  |  import androidx.recyclerview.widget.LinearLayoutManager;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * Author by pq, Date on 2022/4/25.
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  | -public class LiveCourseFragment extends BaseMVPFragment<FragmentLiveCourseLayoutBinding, LiveCoursePresenter> implements LiveCourseContract.LiveCourseView {
 | 
	
		
			
				|  |  | +public class LiveCourseFragment extends BaseMVPFragment<FragmentLiveCourseLayoutBinding, LiveCoursePresenter> implements LiveCourseContract.LiveCourseView, View.OnClickListener {
 | 
	
		
			
				|  |  |      private String currentCourseFilterStatus = CourseFilterConstants.COURSE_FILTER_ALL;
 | 
	
		
			
				|  |  |      private String currentFilterDate;
 | 
	
		
			
				|  |  | +    private Date currentSelectDate;
 | 
	
		
			
				|  |  |      private int currentSubjectId;
 | 
	
		
			
				|  |  |      private int currentPage;
 | 
	
		
			
				|  |  |      private LiveCourseListAdapter mAdapter;
 | 
	
		
			
				|  |  |      private View mEmptyView;
 | 
	
		
			
				|  |  |      private TextView mTvEmptyTip;
 | 
	
		
			
				|  |  | +    private TimePickerView pvTime;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      protected FragmentLiveCourseLayoutBinding getLayoutView() {
 | 
	
	
		
			
				|  | @@ -49,17 +58,24 @@ public class LiveCourseFragment extends BaseMVPFragment<FragmentLiveCourseLayout
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      protected void initView(View rootView) {
 | 
	
		
			
				|  |  | -        buildDefaultFilter();
 | 
	
		
			
				|  |  | -        mViewBinding.tvTime.setText(currentFilterDate);
 | 
	
		
			
				|  |  | +        reBuildFilter(null,CourseFilterConstants.COURSE_FILTER_ALL);
 | 
	
		
			
				|  |  | +        mViewBinding.tvTime.setOnClickListener(this);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private void buildDefaultFilter() {
 | 
	
		
			
				|  |  | -        currentFilterDate = TimeUtils.getNowString(TimeUtils.getSafeDateFormat("yyyy-MM"));
 | 
	
		
			
				|  |  | -        currentCourseFilterStatus = CourseFilterConstants.COURSE_FILTER_ALL;
 | 
	
		
			
				|  |  | +    private void reBuildFilter(Date date, String status) {
 | 
	
		
			
				|  |  | +        currentSelectDate = date != null ? date : TimeUtils.getNowDate();
 | 
	
		
			
				|  |  | +        String targetDateTimeStr = TimeUtils.date2String(currentSelectDate, TimeUtils.getSafeDateFormat("yyyy-MM"));
 | 
	
		
			
				|  |  | +        if (TextUtils.equals(targetDateTimeStr, currentFilterDate) && TextUtils.equals(currentCourseFilterStatus,status)) {
 | 
	
		
			
				|  |  | +            //防止重复条件触发
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        currentFilterDate = targetDateTimeStr;
 | 
	
		
			
				|  |  | +        currentCourseFilterStatus = !TextUtils.isEmpty(status) ? status : CourseFilterConstants.COURSE_FILTER_ALL;
 | 
	
		
			
				|  |  |          currentPage = 1;
 | 
	
		
			
				|  |  | +        mViewBinding.tvTime.setText(currentFilterDate);
 | 
	
		
			
				|  |  | +        queryCourse();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      protected void initData() {
 | 
	
		
			
				|  |  |          mViewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
 | 
	
	
		
			
				|  | @@ -127,7 +143,17 @@ public class LiveCourseFragment extends BaseMVPFragment<FragmentLiveCourseLayout
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public void onGetCourseError(int page) {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        if (isDetached()) {
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (page == 1) {
 | 
	
		
			
				|  |  | +            mViewBinding.refreshLayout.finishRefresh();
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            if (mAdapter != null) {
 | 
	
		
			
				|  |  | +                currentPage--;
 | 
	
		
			
				|  |  | +                mAdapter.getLoadMoreModule().loadMoreFail();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private void showEmptyView() {
 | 
	
	
		
			
				|  | @@ -138,4 +164,55 @@ public class LiveCourseFragment extends BaseMVPFragment<FragmentLiveCourseLayout
 | 
	
		
			
				|  |  |          mTvEmptyTip.setText("暂无数据");
 | 
	
		
			
				|  |  |          mAdapter.setEmptyView(mEmptyView);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private void showTimeSelectPicker() {
 | 
	
		
			
				|  |  | +        if (pvTime == null) {
 | 
	
		
			
				|  |  | +            pvTime = new TimePickerBuilder(requireContext(), (date, v) -> {//选中事件回调
 | 
	
		
			
				|  |  | +                reBuildFilter(date, currentCourseFilterStatus);
 | 
	
		
			
				|  |  | +            }).setLayoutRes(com.cooleshow.base.R.layout.pickerview_default_layout, new CustomListener() {
 | 
	
		
			
				|  |  | +                @Override
 | 
	
		
			
				|  |  | +                public void customLayout(View v) {
 | 
	
		
			
				|  |  | +                    //自定义布局中的控件初始化及事件处理
 | 
	
		
			
				|  |  | +                    final TextView tvSubmit = (TextView) v.findViewById(com.cooleshow.base.R.id.tv_finish);
 | 
	
		
			
				|  |  | +                    TextView ivCancel = (TextView) v.findViewById(com.cooleshow.base.R.id.tv_cancel);
 | 
	
		
			
				|  |  | +                    tvSubmit.setOnClickListener(new View.OnClickListener() {
 | 
	
		
			
				|  |  | +                        @Override
 | 
	
		
			
				|  |  | +                        public void onClick(View v) {
 | 
	
		
			
				|  |  | +                            pvTime.returnData();
 | 
	
		
			
				|  |  | +                            pvTime.dismiss();
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                    ivCancel.setOnClickListener(new View.OnClickListener() {
 | 
	
		
			
				|  |  | +                        @Override
 | 
	
		
			
				|  |  | +                        public void onClick(View v) {
 | 
	
		
			
				|  |  | +                            pvTime.dismiss();
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +                    .setLineSpacingMultiplier(2.5f)
 | 
	
		
			
				|  |  | +                    .setType(new boolean[]{true, true, false, false, false, false})// 默认全部显示
 | 
	
		
			
				|  |  | +                    .setTextColorCenter(getResources().getColor(com.cooleshow.base.R.color.color_1a1a1a))//设置选中项的颜色
 | 
	
		
			
				|  |  | +                    .isDialog(false)//是否显示为对话框样式
 | 
	
		
			
				|  |  | +                    .setLabel("年", "月", "", "", "", "")
 | 
	
		
			
				|  |  | +                    .build();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        Calendar calendar = Calendar.getInstance();
 | 
	
		
			
				|  |  | +        calendar.setTime(currentSelectDate);
 | 
	
		
			
				|  |  | +        pvTime.setDate(calendar);
 | 
	
		
			
				|  |  | +        if (!pvTime.isShowing()) {
 | 
	
		
			
				|  |  | +            pvTime.show();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void onClick(View v) {
 | 
	
		
			
				|  |  | +        if (v.getId() == R.id.tv_time) {
 | 
	
		
			
				|  |  | +            //时间筛选
 | 
	
		
			
				|  |  | +            showTimeSelectPicker();
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |