Browse Source

增加老师端我的课程页面-直播课时间选择逻辑

Pq 3 years ago
parent
commit
70a5732591

+ 2 - 2
teacher/src/main/java/com/cooleshow/teacher/adapter/LiveCourseListAdapter.java

@@ -34,9 +34,9 @@ public class LiveCourseListAdapter extends BaseQuickAdapter<LiveCourseListBean.R
         //subjectName
         holder.setText(R.id.tv_course_name, data.subjectName);
         //购买人数
-        holder.setText(R.id.tv_buy_num, data.studentCount);
-        ImageView iv_avatar = holder.getView(R.id.iv_bg);
+        holder.setText(R.id.tv_buy_num, getContext().getString(R.string.pay_count_str, data.studentCount));
         //头像
+        ImageView iv_avatar = holder.getView(R.id.iv_bg);
         GlideUtils.INSTANCE.loadImage(getContext(), data.backgroundPic, iv_avatar, R.drawable.icon_teacher_default_head);
 
         TextView tvCourseStatusBt = holder.getView(R.id.tv_course_status);

+ 85 - 8
teacher/src/main/java/com/cooleshow/teacher/ui/course/LiveCourseFragment.java

@@ -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;
+        }
+    }
 }

+ 7 - 3
teacher/src/main/java/com/cooleshow/teacher/ui/course/SparringCourseFragment.java

@@ -60,7 +60,12 @@ public class SparringCourseFragment extends BaseMVPFragment<FragmentSparringCour
 
     private void reBuildFilter(Date date, String status) {
         currentSelectDate = date != null ? date : TimeUtils.getNowDate();
-        currentFilterDate = TimeUtils.date2String(currentSelectDate, TimeUtils.getSafeDateFormat("yyyy-MM"));
+        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);
@@ -142,6 +147,7 @@ public class SparringCourseFragment extends BaseMVPFragment<FragmentSparringCour
             mViewBinding.refreshLayout.finishRefresh();
         } else {
             if (mAdapter != null) {
+                currentPage--;
                 mAdapter.getLoadMoreModule().loadMoreFail();
             }
         }
@@ -158,8 +164,6 @@ public class SparringCourseFragment extends BaseMVPFragment<FragmentSparringCour
 
     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() {