Bladeren bron

修改我的页面教学工具实现方式,增加小组状态页面

Pq 7 maanden geleden
bovenliggende
commit
02588ac7ce
21 gewijzigde bestanden met toevoegingen van 1063 en 209 verwijderingen
  1. 1 0
      BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt
  2. 6 0
      teacher/src/main/AndroidManifest.xml
  3. 2 1
      teacher/src/main/java/com/cooleshow/teacher/adapter/MineCommonToolAdapter.java
  4. 113 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/MineGroupCourseAdapter.java
  5. 26 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/MineTeachToolAdapter.java
  6. 13 6
      teacher/src/main/java/com/cooleshow/teacher/bean/MineLiveCourseListBean.java
  7. 24 0
      teacher/src/main/java/com/cooleshow/teacher/contract/MineGroupCourseContract.java
  8. 64 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/course/MineGroupCoursePresenter.java
  9. 2 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/course/MineLiveCoursePresenter.java
  10. 2 2
      teacher/src/main/java/com/cooleshow/teacher/ui/course/GroupCourseDetailActivity.java
  11. 142 0
      teacher/src/main/java/com/cooleshow/teacher/ui/course/MineGroupCourseActivity.java
  12. 262 0
      teacher/src/main/java/com/cooleshow/teacher/ui/course/MineGroupCourseFragment.java
  13. 1 0
      teacher/src/main/java/com/cooleshow/teacher/ui/homepage/GroupCoursePageFragment.java
  14. 90 69
      teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java
  15. 44 3
      teacher/src/main/java/com/cooleshow/teacher/widgets/helper/MineFragmentToolsHelper.java
  16. BIN
      teacher/src/main/res/drawable-xhdpi/icon_mine_group_course.png
  17. BIN
      teacher/src/main/res/drawable-xxhdpi/icon_mine_group_course.png
  18. 78 0
      teacher/src/main/res/layout/fragment_mine_group_course.xml
  19. 6 128
      teacher/src/main/res/layout/fragment_mine_layout.xml
  20. 25 0
      teacher/src/main/res/layout/item_mine_teach_tool_layout.xml
  21. 162 0
      teacher/src/main/res/layout/layout_mine_group_course_item.xml

+ 1 - 0
BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt

@@ -91,6 +91,7 @@ object RouterPath {
             const val GROUP_COURSE_DETAIL = "/teacher/ui/course/GroupCourseDetailActivity"
             const val PIANO_ROOM_COURSE_HOMEWORK = "/teacher/ui/course/PianoRoomCourseHomeWorkActivity"
             const val TEACHER_MINE_LIVE_COURSE = "/teacher/ui/course/MineLiveCourseActivity"
+            const val TEACHER_MINE_GROUP_COURSE = "/teacher/ui/course/MineGroupCourseActivity"
             const val TEACHER_MINE_CREATE_LIVE_COURSE_INFO =
                 "/teacher/ui/course/CreateLiveCourseInfoActivity"
             const val TEACHER_MINE_CREATE_LIVE_COURSE_ARRANGEMENT =

+ 6 - 0
teacher/src/main/AndroidManifest.xml

@@ -257,6 +257,12 @@
             android:name=".ui.course.MineLiveCourseActivity"
             android:configChanges="orientation|screenSize|keyboardHidden|fontScale|smallestScreenSize|screenLayout|uiMode"
             android:screenOrientation="portrait" />
+
+        <activity
+            android:name=".ui.course.MineGroupCourseActivity"
+            android:configChanges="orientation|screenSize|keyboardHidden|fontScale|smallestScreenSize|screenLayout|uiMode"
+            android:screenOrientation="portrait" />
+
         <activity
             android:name=".ui.course.CreateLiveCourseInfoActivity"
             android:configChanges="orientation|screenSize|keyboardHidden|fontScale|smallestScreenSize|screenLayout|uiMode"

+ 2 - 1
teacher/src/main/java/com/cooleshow/teacher/bean/MineCommonToolAdapter.java → teacher/src/main/java/com/cooleshow/teacher/adapter/MineCommonToolAdapter.java

@@ -1,10 +1,11 @@
-package com.cooleshow.teacher.bean;
+package com.cooleshow.teacher.adapter;
 
 import android.widget.ImageView;
 
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.viewholder.BaseViewHolder;
 import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.MineToolMenuBean;
 
 import androidx.annotation.NonNull;
 

+ 113 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/MineGroupCourseAdapter.java

@@ -0,0 +1,113 @@
+package com.cooleshow.teacher.adapter;
+
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.module.BaseLoadMoreModule;
+import com.chad.library.adapter.base.module.LoadMoreModule;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.base.utils.StringUtils;
+import com.cooleshow.base.utils.TimeUtils;
+import com.cooleshow.base.utils.UiUtils;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+import com.cooleshow.teacher.ui.course.MineLiveCourseActivity;
+
+import androidx.annotation.NonNull;
+
+/**
+ * 创建日期:2022/5/19 16:38
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineGroupCourseAdapter extends BaseQuickAdapter<MineLiveCourseListBean.RowsBean, BaseViewHolder> implements LoadMoreModule {
+    private String type;
+
+    public MineGroupCourseAdapter(String type) {
+        super(R.layout.layout_mine_group_course_item);
+        this.type = type;
+    }
+
+
+    @Override
+    protected void convert(BaseViewHolder helper, MineLiveCourseListBean.RowsBean item) {
+        if (item == null) {
+            return;
+        }
+        String timeStr = TextUtils.isEmpty(item.courseStartTime) ? "" : TimeUtils.date2String(TimeUtils.string2Date(item.courseStartTime), "yyyy-MM-dd HH:mm");
+        //时间
+        helper.setText(R.id.tv_time, "开课时间:" + timeStr);
+        //title
+        helper.setText(R.id.tv_title, item.courseGroupName);
+        //介绍
+        String courseIntroduce = item.courseIntroduce;
+        if (TextUtils.isEmpty(courseIntroduce)) {
+            courseIntroduce = "暂无介绍";
+        }
+        courseIntroduce = StringUtils.replaceSpace(courseIntroduce);
+        helper.setText(R.id.tv_des, courseIntroduce);
+        //课程封面
+        ImageView iv_bg = helper.getView(R.id.iv_bg);
+        GlideUtils.INSTANCE.loadImage(getContext(), item.backgroundPic, iv_bg);
+
+        //学生购买人数
+        TextView tv_student_count = helper.getView(R.id.tv_buy_num);
+        tv_student_count.setText(UiUtils.getBuyNumTip(item.coursePrice, String.valueOf(item.studentCount)));
+        if (TextUtils.equals(type, MineLiveCourseActivity.TYPE_NOT_SALE)) {
+            tv_student_count.setVisibility(View.INVISIBLE);
+        } else {
+            tv_student_count.setVisibility(View.VISIBLE);
+        }
+        //课程价格
+        TextView tv_price = helper.getView(R.id.tv_price);
+        tv_price.setText(UiUtils.getLiveCoursePriceText(item.coursePrice, item.courseNum));
+        TextView tv_price_unit = helper.getView(R.id.tv_price_unit);
+        tv_price_unit.setText(String.format("/%d课时", item.courseNum));
+        //声部
+        helper.setText(R.id.tv_course_name, item.subjectName);
+
+        TextView tv_course_status_tip = helper.getView(R.id.tv_course_status_tip);
+        if (TextUtils.equals(type, MineLiveCourseActivity.TYPE_ING)) {
+            //进行中
+            tv_course_status_tip.setText("进行中");
+            tv_course_status_tip.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_2dc7aa));
+            tv_course_status_tip.setBackgroundResource(R.drawable.shape_d5fff7_15dp_left);
+        } else if (TextUtils.equals(type, MineLiveCourseActivity.TYPE_NOT_SALE)) {
+            //未上架
+            tv_course_status_tip.setText("未上架");
+            tv_course_status_tip.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_ff4e19));
+            tv_course_status_tip.setBackgroundResource(R.drawable.shape_ffeee3_15dp_left);
+        } else if (TextUtils.equals(type, MineLiveCourseActivity.TYPE_APPLY)) {
+            //销售中
+            tv_course_status_tip.setText("销售中");
+            tv_course_status_tip.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_ff1919));
+            tv_course_status_tip.setBackgroundResource(R.drawable.shape_ffe7e7_15dp_left);
+        } else if (TextUtils.equals(type, MineLiveCourseActivity.TYPE_COMPLETE)) {
+            //已完成
+            tv_course_status_tip.setText("已完成");
+            tv_course_status_tip.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_008ae0));
+            tv_course_status_tip.setBackgroundResource(R.drawable.shape_def2ff_15dp_left);
+        } else if (TextUtils.equals(type, MineLiveCourseActivity.TYPE_CANCEL)) {
+            //已取消
+            tv_course_status_tip.setText("已取消");
+            tv_course_status_tip.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_666666));
+            tv_course_status_tip.setBackgroundResource(R.drawable.shape_f0f0f0_15dp_left);
+        } else if (TextUtils.equals(type, MineLiveCourseActivity.TYPE_OUT_SALE)) {
+            tv_course_status_tip.setText("已下架");
+            tv_course_status_tip.setTextColor(getContext().getResources().getColor(com.cooleshow.base.R.color.color_666666));
+            tv_course_status_tip.setBackgroundResource(R.drawable.shape_f0f0f0_15dp_left);
+        }
+    }
+
+    @NonNull
+    @Override
+    public BaseLoadMoreModule addLoadMoreModule(@NonNull BaseQuickAdapter<?, ?> baseQuickAdapter) {
+        return new BaseLoadMoreModule(baseQuickAdapter);
+    }
+
+}

+ 26 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/MineTeachToolAdapter.java

@@ -0,0 +1,26 @@
+package com.cooleshow.teacher.adapter;
+
+import android.widget.ImageView;
+
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.viewholder.BaseViewHolder;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.MineToolMenuBean;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Author by pq, Date on 2022/9/8.
+ */
+public class MineTeachToolAdapter extends BaseQuickAdapter<MineToolMenuBean, BaseViewHolder> {
+    public MineTeachToolAdapter() {
+        super(R.layout.item_mine_teach_tool_layout);
+    }
+
+    @Override
+    protected void convert(@NonNull BaseViewHolder holder, MineToolMenuBean bean) {
+        ImageView iv_icon = holder.getView(R.id.iv_icon);
+        iv_icon.setImageResource(bean.drawable);
+        holder.setText(R.id.tv_title, bean.title);
+    }
+}

+ 13 - 6
teacher/src/main/java/com/cooleshow/teacher/bean/MineLiveCourseListBean.java

@@ -18,6 +18,13 @@ public class MineLiveCourseListBean {
     public int totalPage;
     public List<RowsBean> rows;
 
+    public List<RowsBean> getRows() {
+        return rows;
+    }
+
+    public void setRows(List<RowsBean> rows) {
+        this.rows = rows;
+    }
 
     public static class RowsBean {
         /**
@@ -44,7 +51,7 @@ public class MineLiveCourseListBean {
          */
         public String avatar;
         public String backgroundPic;
-        public int courseGroupId;
+        public String courseGroupId;
         public String courseGroupName;
         public String courseIntroduce;
         public int  courseNum;
@@ -59,7 +66,7 @@ public class MineLiveCourseListBean {
         public String status;
         public int studentCount;
         public String subjectName;
-        public int teacherId;
+        public String teacherId;
         public String teacherName;
         public String userName;
         public int maxStudentNum;
@@ -80,11 +87,11 @@ public class MineLiveCourseListBean {
             this.backgroundPic = backgroundPic;
         }
 
-        public int getCourseGroupId() {
+        public String getCourseGroupId() {
             return courseGroupId;
         }
 
-        public void setCourseGroupId(int courseGroupId) {
+        public void setCourseGroupId(String courseGroupId) {
             this.courseGroupId = courseGroupId;
         }
 
@@ -200,11 +207,11 @@ public class MineLiveCourseListBean {
             this.subjectName = subjectName;
         }
 
-        public int getTeacherId() {
+        public String getTeacherId() {
             return teacherId;
         }
 
-        public void setTeacherId(int teacherId) {
+        public void setTeacherId(String teacherId) {
             this.teacherId = teacherId;
         }
 

+ 24 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/MineGroupCourseContract.java

@@ -0,0 +1,24 @@
+package com.cooleshow.teacher.contract;
+
+import com.cooleshow.base.presenter.view.BaseView;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+import com.cooleshow.usercenter.bean.TeacherUserInfo;
+
+/**
+ * 创建日期:2022/5/19 15:16
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public interface MineGroupCourseContract {
+    interface View extends BaseView {
+        void queryPageCourseGroupSuccess(int page, MineLiveCourseListBean data);
+
+        void queryPageCourseGroupError(int page);
+
+        void getTeacherInfoSuccess(TeacherUserInfo data);
+    }
+
+    interface Presenter {
+    }
+}

+ 64 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/course/MineGroupCoursePresenter.java

@@ -0,0 +1,64 @@
+package com.cooleshow.teacher.presenter.course;
+
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.constanst.CourseType;
+import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.teacher.api.APIService;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+import com.cooleshow.teacher.bean.request.LiveCourseEntry;
+import com.cooleshow.teacher.contract.MineGroupCourseContract;
+import com.cooleshow.teacher.contract.MineLiveCourseContract;
+import com.cooleshow.usercenter.bean.TeacherUserInfo;
+
+/**
+ * 创建日期:2022/5/19 15:15
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineGroupCoursePresenter extends BasePresenter<MineGroupCourseContract.View> implements MineGroupCourseContract.Presenter {
+    public void queryPageCourseGroup(boolean isLoading, int page, String groupStatus) {
+        if (isLoading && getView() != null) {
+            getView().showLoading();
+        }
+        LiveCourseEntry entry = new LiveCourseEntry();
+        entry.rows = Constants.DEFAULT_DATA_SIZE;
+        entry.page = page;
+        entry.groupStatus = groupStatus;
+        entry.courseType = CourseType.GROUP.getId();
+        addSubscribe(create(APIService.class).queryPageCourseGroup(entry), new BaseObserver<MineLiveCourseListBean>(getView()) {
+            @Override
+            protected void onSuccess(MineLiveCourseListBean data) {
+                if (getView() != null) {
+                    getView().queryPageCourseGroupSuccess(page, data);
+                }
+            }
+
+            @Override
+            public void onComplete() {
+                super.onComplete();
+                getView().hideLoading();
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (getView() != null) {
+                    getView().queryPageCourseGroupError(page);
+                }
+            }
+        });
+    }
+
+    public void getTeacherUserInfo() {
+        addSubscribe(create(APIService.class).getTeacherUserInfo(), new BaseObserver<TeacherUserInfo>(getView()) {
+            @Override
+            protected void onSuccess(TeacherUserInfo data) {
+                if (getView() != null) {
+                    getView().getTeacherInfoSuccess(data);
+                }
+            }
+        });
+    }
+}

+ 2 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/course/MineLiveCoursePresenter.java

@@ -1,6 +1,7 @@
 package com.cooleshow.teacher.presenter.course;
 
 import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.constanst.CourseType;
 import com.cooleshow.base.presenter.BasePresenter;
 import com.cooleshow.base.rx.BaseObserver;
 import com.cooleshow.teacher.api.APIService;
@@ -24,6 +25,7 @@ public class MineLiveCoursePresenter extends BasePresenter<MineLiveCourseContrac
         entry.rows = Constants.DEFAULT_DATA_SIZE;
         entry.page = page;
         entry.groupStatus = groupStatus;
+        entry.courseType = CourseType.LIVE.getId();
         addSubscribe(create(APIService.class).queryPageCourseGroup(entry), new BaseObserver<MineLiveCourseListBean>(getView()) {
             @Override
             protected void onSuccess(MineLiveCourseListBean data) {

+ 2 - 2
teacher/src/main/java/com/cooleshow/teacher/ui/course/GroupCourseDetailActivity.java

@@ -119,8 +119,8 @@ public class GroupCourseDetailActivity extends BaseMVPActivity<ActivityGroupCour
     }
 
     @Override
-    protected ActivityPianoRoomDetailLayoutBinding getLayoutView() {
-        return ActivityPianoRoomDetailLayoutBinding.inflate(getLayoutInflater());
+    protected ActivityGroupCourseDetailLayoutBinding getLayoutView() {
+        return ActivityGroupCourseDetailLayoutBinding.inflate(getLayoutInflater());
     }
 
     @Override

+ 142 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/course/MineGroupCourseActivity.java

@@ -0,0 +1,142 @@
+package com.cooleshow.teacher.ui.course;
+
+import android.os.Bundle;
+import android.view.View;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
+import com.cooleshow.base.utils.helper.WebStartHelper;
+import com.cooleshow.teacher.adapter.MineLiveCoursePagerAdapter;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+import com.cooleshow.teacher.contract.MineGroupCourseContract;
+import com.cooleshow.teacher.contract.MineLiveCourseContract;
+import com.cooleshow.teacher.databinding.ActivityMineLiveCourseBinding;
+import com.cooleshow.teacher.presenter.course.MineGroupCoursePresenter;
+import com.cooleshow.teacher.presenter.course.MineLiveCoursePresenter;
+import com.cooleshow.usercenter.bean.TeacherUserInfo;
+import com.cooleshow.usercenter.helper.UserHelper;
+import com.google.android.material.tabs.TabLayout;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.viewpager.widget.ViewPager;
+
+
+/**
+ * 创建日期:2022/5/19 15:12
+ *
+ * @author Ryan
+ * 类说明:
+ */
+@Route(path = RouterPath.CourseCenter.TEACHER_MINE_GROUP_COURSE)
+public class MineGroupCourseActivity extends BaseMVPActivity<ActivityMineLiveCourseBinding, MineGroupCoursePresenter> implements View.OnClickListener, MineGroupCourseContract.View {
+    private List<String> titles = new ArrayList<String>(Arrays.asList("进行中", "未上架", "销售中", "已完成", "已取消"));
+    private List<String> types = new ArrayList<String>(Arrays.asList(TYPE_ING, TYPE_NOT_SALE, TYPE_APPLY, TYPE_COMPLETE, TYPE_CANCEL));
+    private List<Fragment> fragments = new ArrayList<>();
+    private TabLayout tabLayout;
+    private ViewPager viewPager;
+    public static final String TYPE_ING = "ING";//进行中
+    public static final String TYPE_NOT_SALE = "NOT_SALE";//未上架
+    public static final String TYPE_APPLY = "APPLY";//销售中
+    public static final String TYPE_COMPLETE = "COMPLETE";//已完成
+    public static final String TYPE_CANCEL = "CANCEL";//已取消
+    public static final String TYPE_OUT_SALE = "OUT_SALE";//已下架
+
+
+    @Override
+    public void onClick(View view) {
+        if (view.getId() == com.cooleshow.base.R.id.tv_right_text) {
+            WebStartHelper.goCreateGroupCourse();
+        }
+    }
+
+    @Override
+    protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "小组课");
+        viewBinding.toolbarInclude.tvRightText.setTextColor(getResources().getColor(com.cooleshow.base.R.color.common_black));
+        viewBinding.toolbarInclude.tvRightText.setVisibility(View.VISIBLE);
+        viewBinding.toolbarInclude.tvRightText.setText("创建课程");
+        viewBinding.toolbarInclude.tvRightText.setOnClickListener(this);
+        tabLayout = viewBinding.tablayout;
+        viewPager = viewBinding.viewpager;
+        viewPager.setCurrentItem(0);
+
+    }
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        QMUIStatusBarHelper.setStatusBarLightMode(this);
+    }
+
+    @Override
+    public void initData() {
+        super.initData();
+        initTabLayoutAndViewPager();
+    }
+
+    private void initTabLayoutAndViewPager() {
+        tabLayout.removeAllTabs();
+        fragments.clear();
+        for (int i = 0; i < titles.size(); i++) {
+            tabLayout.addTab(tabLayout.newTab().setText(titles.get(i)));
+            MineGroupCourseFragment adFragment = MineGroupCourseFragment.newInstance(types.get(i));
+            fragments.add(adFragment);
+        }
+        viewPager.setAdapter(new MineLiveCoursePagerAdapter(getSupportFragmentManager(), fragments, titles));
+        viewPager.setOffscreenPageLimit(fragments.size());
+        tabLayout.setupWithViewPager(viewPager);
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        presenter.getTeacherUserInfo();
+    }
+
+    @Override
+    protected ActivityMineLiveCourseBinding getLayoutView() {
+        return ActivityMineLiveCourseBinding.inflate(getLayoutInflater());
+    }
+
+
+    @Override
+    protected MineGroupCoursePresenter createPresenter() {
+        return new MineGroupCoursePresenter();
+    }
+
+    @Override
+    public void queryPageCourseGroupSuccess(int page, MineLiveCourseListBean data) {
+
+    }
+
+    @Override
+    public void queryPageCourseGroupError(int page) {
+
+    }
+
+    @Override
+    public void getTeacherInfoSuccess(TeacherUserInfo data) {
+        if (!checkActivityExist()) {
+            return;
+        }
+        if (fragments != null) {
+            for (int i = 0; i < fragments.size(); i++) {
+                Fragment fragment = fragments.get(i);
+                if (fragment instanceof MineGroupCourseFragment) {
+                    MineGroupCourseFragment groupCourseFragment = (MineGroupCourseFragment) fragment;
+                    groupCourseFragment.getTeacherInfoSuccess(data);
+                }
+            }
+        }
+    }
+}

+ 262 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/course/MineGroupCourseFragment.java

@@ -0,0 +1,262 @@
+package com.cooleshow.teacher.ui.course;
+
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.TextView;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.cooleshow.base.common.WebConstants;
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.router.RouterPath;
+import com.cooleshow.base.ui.fragment.BaseMVPFragment;
+import com.cooleshow.base.utils.LOG;
+import com.cooleshow.base.utils.SizeUtils;
+import com.cooleshow.base.utils.helper.QMUIDeviceHelper;
+import com.cooleshow.base.utils.helper.WebStartHelper;
+import com.cooleshow.base.widgets.GridItemDecoration;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.MineGroupCourseAdapter;
+import com.cooleshow.teacher.adapter.MineLiveCourseAdapter;
+import com.cooleshow.teacher.bean.MineLiveCourseListBean;
+import com.cooleshow.teacher.constants.CourseConstants;
+import com.cooleshow.teacher.constants.TeacherInfoConstants;
+import com.cooleshow.teacher.contract.MineGroupCourseContract;
+import com.cooleshow.teacher.contract.MineLiveCourseContract;
+import com.cooleshow.teacher.databinding.FragmentMineGroupCourseBinding;
+import com.cooleshow.teacher.databinding.FragmentMineLiveCourseBinding;
+import com.cooleshow.teacher.presenter.course.MineGroupCoursePresenter;
+import com.cooleshow.teacher.presenter.course.MineLiveCoursePresenter;
+import com.cooleshow.usercenter.bean.TeacherUserInfo;
+import com.cooleshow.usercenter.helper.UserHelper;
+import com.scwang.smart.refresh.footer.ClassicsFooter;
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+/**
+ * 创建日期:2022/5/19 15:38
+ *
+ * @author Ryan
+ * 类说明:
+ */
+public class MineGroupCourseFragment extends BaseMVPFragment<FragmentMineGroupCourseBinding, MineGroupCoursePresenter> implements MineGroupCourseContract.View, View.OnClickListener {
+
+    @Override
+    public void onClick(View view) {
+        switch (view.getId()) {
+            case R.id.tv_create:
+                WebStartHelper.goCreateGroupCourse();
+                break;
+            case R.id.tv_open:
+                if (certFlag == 0) {
+                    //未认证->去认证
+                    ARouter.getInstance().build(RouterPath.WebCenter.ACTIVITY_HTML)
+                            .withString(WebConstants.WEB_URL, WebConstants.TEACHER_CERT)
+                            .navigation();
+                }
+                break;
+        }
+    }
+
+    public static MineGroupCourseFragment newInstance(String type) {
+        Bundle args = new Bundle();
+        MineGroupCourseFragment fragment = new MineGroupCourseFragment();
+        args.putString("type", type);
+        fragment.setArguments(args);
+        return fragment;
+    }
+
+    @Override
+    protected FragmentMineGroupCourseBinding getLayoutView() {
+        return FragmentMineGroupCourseBinding.inflate(getLayoutInflater());
+    }
+
+    @Override
+    protected MineGroupCoursePresenter createPresenter() {
+        return new MineGroupCoursePresenter();
+    }
+
+    private String type = "";
+    private MineGroupCourseAdapter mAdapter;
+    //是否认证 0 否 1 是
+    private int certFlag;
+
+    @Override
+    protected void initView(View rootView) {
+        type = getArguments().getString("type");
+        mViewBinding.refreshLayout.setRefreshFooter(new ClassicsFooter(getContext()));
+        RecyclerView rvAddress = mViewBinding.recyclerView;
+        RecyclerView.LayoutManager layoutManager;
+        if (QMUIDeviceHelper.isTablet(getContext())) {
+            layoutManager = new GridLayoutManager(getContext(), 2);
+            GridItemDecoration itemDecoration = new GridItemDecoration(2, 0, 0, SizeUtils.dp2px(6));
+            mViewBinding.recyclerView.addItemDecoration(itemDecoration);
+        } else {
+            layoutManager = new LinearLayoutManager(getContext());
+        }
+        rvAddress.setLayoutManager(layoutManager);
+        mAdapter = new MineGroupCourseAdapter(type);
+        LayoutInflater inflater = LayoutInflater.from(getContext());
+        View emptyLayout = inflater.inflate(R.layout.empty_mine_live_course, null);
+        TextView tv_create = emptyLayout.findViewById(R.id.tv_create);
+        TextView tv_empty_hint = emptyLayout.findViewById(R.id.tv_empty_hint);
+        tv_empty_hint.setText(getEmptyText());
+        tv_create.setOnClickListener(this);
+        mAdapter.setEmptyView(emptyLayout);
+        rvAddress.setAdapter(mAdapter);
+        mViewBinding.tvOpen.setOnClickListener(this);
+        mAdapter.setOnItemClickListener((adapter, view, position) -> {
+            MineLiveCourseListBean.RowsBean item = (MineLiveCourseListBean.RowsBean) adapter.getItem(position);
+            if (TextUtils.equals(type, MineGroupCourseActivity.TYPE_APPLY) ||
+                    TextUtils.equals(type, MineGroupCourseActivity.TYPE_NOT_SALE)||
+                    TextUtils.equals(type, MineGroupCourseActivity.TYPE_CANCEL)||
+                    TextUtils.equals(type, MineGroupCourseActivity.TYPE_OUT_SALE)) {
+                WebStartHelper.startAppointmentGroupCourse(item.getCourseGroupId());
+            }else{
+                ARouter.getInstance().build(RouterPath.CourseCenter.GROUP_COURSE_GROUP_DETAIL)
+                        .withString(CourseConstants.COURSE_GROUP_ID, item.getCourseGroupId())
+                        .navigation();
+            }
+        });
+
+    }
+
+    private int currentPage;
+
+    @Override
+    protected void initData() {
+        mViewBinding.refreshLayout.setOnRefreshListener(refreshLayout -> {
+            currentPage = 1;
+            queryCourse(true);
+        });
+
+        mViewBinding.refreshLayout.setOnLoadMoreListener(new com.scwang.smart.refresh.layout.listener.OnLoadMoreListener() {
+            @Override
+            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
+                //上拉加载
+                if (hasNext) {
+                    currentPage++;
+                    queryCourse(false);
+                } else {
+                    mViewBinding.refreshLayout.finishLoadMoreWithNoMoreData();
+                }
+            }
+        });
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+    }
+
+    private boolean hasNext = true;
+
+    /**
+     * 检查是否还有下一页
+     *
+     * @param dataSize
+     */
+    private void checkHasNext(int dataSize) {
+        hasNext = dataSize >= Constants.DEFAULT_DATA_SIZE;
+    }
+
+    private void queryCourse(boolean isLoading) {
+        presenter.queryPageCourseGroup(isLoading, currentPage, type);
+
+    }
+
+    @Override
+    public void queryPageCourseGroupSuccess(int page, MineLiveCourseListBean dataList) {
+        if (isDetached()) {
+            return;
+        }
+        LOG.i("pq", "onGetLiveCourseSuccess:" + dataList);
+        if (dataList != null) {
+            if (page == 1) {
+                //第一页
+                mViewBinding.refreshLayout.finishRefresh();
+                if (mAdapter != null) {
+                    mAdapter.getData().clear();
+                    mAdapter.notifyDataSetChanged();
+                    if (dataList.getRows() != null && dataList.getRows().size() > 0) {
+                        checkHasNext(dataList.getRows().size());
+                        mAdapter.setNewInstance(dataList.getRows());
+                    }
+                }
+            } else {
+                //加载更多
+                if (mAdapter != null) {
+                    if (dataList.getRows() != null && dataList.getRows().size() > 0) {
+                        mViewBinding.refreshLayout.finishLoadMore();
+                        checkHasNext(dataList.getRows().size());
+                        mAdapter.addData(dataList.getRows());
+                    } else {
+                        mViewBinding.refreshLayout.finishLoadMoreWithNoMoreData();
+                    }
+                }
+            }
+        }
+
+    }
+
+    @Override
+    public void queryPageCourseGroupError(int page) {
+        if (isDetached()) {
+            return;
+        }
+        if (page == 1) {
+            mViewBinding.refreshLayout.finishRefresh();
+        } else {
+            if (mAdapter != null) {
+                currentPage--;
+                mViewBinding.refreshLayout.finishLoadMore(false);
+            }
+        }
+    }
+
+    @Override
+    public void setUserVisibleHint(boolean isVisibleToUser) {
+        super.setUserVisibleHint(isVisibleToUser);
+//        if (isVisibleToUser && presenter != null) {
+//            presenter.getTeacherUserInfo();
+//        }
+    }
+
+    @Override
+    public void getTeacherInfoSuccess(TeacherUserInfo teacherUserInfo) {
+        if (TextUtils.equals(teacherUserInfo.entryStatus, TeacherInfoConstants.ENTRY_STATUS_DOING)) {
+            //入驻审核中
+            certFlag = 0;
+            mViewBinding.refreshLayout.setVisibility(View.GONE);
+            mViewBinding.clEmptyLiveFlag.setVisibility(View.VISIBLE);
+            mViewBinding.tvEmptyHint.setText("老师认证审核中!");
+            mViewBinding.tvOpen.setVisibility(View.GONE);
+        } else if (TextUtils.equals(teacherUserInfo.entryStatus, TeacherInfoConstants.ENTRY_STATUS_PASS)) {
+            //入驻审核通过
+            certFlag = 1;
+            mViewBinding.refreshLayout.setVisibility(View.VISIBLE);
+            mViewBinding.clEmptyLiveFlag.setVisibility(View.GONE);
+            currentPage = 1;
+            queryCourse(true);
+        } else {
+            //未通过或者未申请
+            certFlag = 0;
+            mViewBinding.refreshLayout.setVisibility(View.GONE);
+            mViewBinding.clEmptyLiveFlag.setVisibility(View.VISIBLE);
+            mViewBinding.tvEmptyHint.setText("您还没有完成老师认证\n认证后才可创建直播课哦~");
+            mViewBinding.tvOpen.setVisibility(View.VISIBLE);
+            mViewBinding.tvOpen.setText("去认证");
+        }
+
+    }
+
+
+    private String getEmptyText() {
+        return "暂无内容";
+    }
+}

+ 1 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/homepage/GroupCoursePageFragment.java

@@ -103,6 +103,7 @@ public class GroupCoursePageFragment extends BaseMVPFragment<FragmentLiveCourseP
         mViewBinding.recyclerView.setAdapter(mAdapter);
         mAdapter.setOnItemClickListener((adapter, view, position) -> {
             MineLiveCourseListBean.RowsBean item = mAdapter.getData().get(position);
+            WebStartHelper.startAppointmentGroupCourse(item.getCourseGroupId());
         });
 
     }

+ 90 - 69
teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java

@@ -5,7 +5,6 @@ import android.graphics.Color;
 import android.os.Build;
 import android.text.TextUtils;
 import android.view.View;
-import android.widget.TextView;
 
 import com.alibaba.android.arouter.launcher.ARouter;
 import com.chad.library.adapter.base.BaseQuickAdapter;
@@ -18,15 +17,14 @@ import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.base.utils.DateUtil;
 import com.cooleshow.base.utils.GlideUtils;
-import com.cooleshow.base.utils.PermissionUtils;
 import com.cooleshow.base.utils.UiUtils;
 import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.utils.helper.PermissionTipHelper;
 import com.cooleshow.base.utils.helper.WebStartHelper;
-import com.cooleshow.base.widgets.DialogUtil;
 import com.cooleshow.chatmodule.utils.helper.ChatHelper;
 import com.cooleshow.teacher.R;
-import com.cooleshow.teacher.bean.MineCommonToolAdapter;
+import com.cooleshow.teacher.adapter.MineCommonToolAdapter;
+import com.cooleshow.teacher.adapter.MineTeachToolAdapter;
 import com.cooleshow.teacher.bean.MineToolMenuBean;
 import com.cooleshow.teacher.bean.TeacherPromoteIncomeBean;
 import com.cooleshow.teacher.constants.TeacherInfoConstants;
@@ -36,9 +34,7 @@ import com.cooleshow.teacher.helper.EventHelper;
 import com.cooleshow.teacher.presenter.main.MinePresenter;
 import com.cooleshow.teacher.widgets.dialog.BadgeDesDialog;
 import com.cooleshow.teacher.widgets.helper.MineFragmentToolsHelper;
-import com.cooleshow.usercenter.bean.StudentUserInfo;
 import com.cooleshow.usercenter.bean.TeacherUserInfo;
-import com.cooleshow.usercenter.constants.UserConstants;
 import com.cooleshow.usercenter.helper.UserHelper;
 import com.tbruyelle.rxpermissions3.RxPermissions;
 
@@ -56,6 +52,7 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
     private String customerId = "";
     //是否有直播权限 0 否 1 是
     private int liveFlag;
+    private MineTeachToolAdapter mTeachToolAdapter;
 
     @Override
     protected void initView(View rootView) {
@@ -66,12 +63,9 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
         mViewBinding.tvMineStyle.setOnClickListener(this);
         mViewBinding.ivAvatar.setOnClickListener(this);
         mViewBinding.ivSetting.setOnClickListener(this);
-        mViewBinding.tvLiveCourse.setOnClickListener(this);
-        mViewBinding.tvVideoCourse.setOnClickListener(this);
         mViewBinding.tvHelp.setOnClickListener(this);
         mViewBinding.tvFeedback.setOnClickListener(this);
         mViewBinding.tvAuthentication.setOnClickListener(this);
-        mViewBinding.tvOpenLive.setOnClickListener(this);
         mViewBinding.tvMyAccount.setOnClickListener(this);
         mViewBinding.tvNetworkMonitoring.setOnClickListener(this);
         mViewBinding.tvEquipmentTesting.setOnClickListener(this);
@@ -88,12 +82,7 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
         mViewBinding.tvMineIncome.setOnClickListener(this);
         mViewBinding.tvMineCoupon.setOnClickListener(this);
         mViewBinding.tvSheetMusic.setOnClickListener(this);
-        mViewBinding.tvPianoCourse.setOnClickListener(this);
-        mViewBinding.tvHomework.setOnClickListener(this);
-        mViewBinding.tvCourseComment.setOnClickListener(this);
         mViewBinding.tvContactUs.setOnClickListener(this);
-        mViewBinding.tvAward.setOnClickListener(this);
-        mViewBinding.tvMineCourseware.setOnClickListener(this);
         mViewBinding.tvCustomer.setOnClickListener(this);
     }
 
@@ -103,6 +92,14 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
         GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 4);
         mViewBinding.recyclerViewTools.setLayoutManager(gridLayoutManager);
         mViewBinding.recyclerViewTools.setAdapter(mMineCommonToolAdapter);
+
+        mTeachToolAdapter = new MineTeachToolAdapter();
+        GridLayoutManager teachLayoutManager = new GridLayoutManager(getContext(), 4);
+        mViewBinding.recyclerViewTeachTools.setLayoutManager(teachLayoutManager);
+        mViewBinding.recyclerViewTeachTools.setAdapter(mTeachToolAdapter);
+        ArrayList<MineToolMenuBean> teachTools = MineFragmentToolsHelper.getTeachTools();
+        mTeachToolAdapter.setNewInstance(teachTools);
+
         initListener();
     }
 
@@ -117,6 +114,16 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
             }
         });
 
+        mTeachToolAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                if (position < mTeachToolAdapter.getData().size()) {
+                    MineToolMenuBean mineToolMenuBean = mTeachToolAdapter.getData().get(position);
+                    handleToolClick(mineToolMenuBean.type);
+                }
+            }
+        });
+
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
             mViewBinding.scrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
                 @Override
@@ -257,18 +264,6 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                 ARouter.getInstance().build(RouterPath.MineCenter.MINE_SETTING)
                         .navigation();
                 break;
-            case R.id.tv_live_course:
-                //直播课
-                ARouter.getInstance().build(RouterPath.CourseCenter.TEACHER_MINE_LIVE_COURSE)
-                        .navigation();
-                EventHelper.addEvent(EventConstants.EVENT_ID_MINE_LIVE_COURSE_FOR_TEACHER);
-                break;
-            case R.id.tv_video_course:
-                //视频课
-                ARouter.getInstance().build(RouterPath.CourseCenter.TEACHER_MINE_VIDEO_COURSE)
-                        .navigation();
-                EventHelper.addEvent(EventConstants.EVENT_ID_MINE_VIDEO_COURSE_FOR_TEACHER);
-                break;
             case R.id.tv_help:
                 //帮助中心
                 ARouter.getInstance()
@@ -289,20 +284,6 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                         .navigation();
                 EventHelper.addEvent(EventConstants.EVENT_ID_MYCARD_FOR_TEACHER);
                 break;
-            case R.id.tv_open_live:
-                //开启直播
-                if (liveFlag == 0) {
-                    ARouter.getInstance()
-                            .build(RouterPath.WebCenter.ACTIVITY_HTML)
-                            .withString(WebConstants.WEB_URL, WebConstants.TEACHER_OPEN_LIVE)
-                            .navigation();
-                } else {
-                    ARouter.getInstance().build(RouterPath.LiveCenter.TEACHER_LIVE_LIST)
-                            .navigation();
-                    EventHelper.addEvent(EventConstants.EVENT_ID_MINE_LIVE_FOR_TEACHER);
-                }
-
-                break;
             case R.id.view_fans:
                 ARouter.getInstance()
                         .build(RouterPath.WebCenter.ACTIVITY_HTML)
@@ -364,26 +345,6 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                         .navigation();
                 EventHelper.addEvent(EventConstants.EVENT_ID_UPLOAD_MUSIC_FOR_TEACHER);
                 break;
-            case R.id.tv_piano_course:
-                //云库琴房
-                ARouter.getInstance()
-                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
-                        .withString(WebConstants.WEB_URL, WebConstants.PIANO_ROOM)
-                        .navigation();
-                break;
-            case R.id.tv_homework:
-                //课后作业
-                ARouter.getInstance().build(RouterPath.WorkCenter.TEACHER_WORK_HOMEWORK)
-                        .navigation();
-                //事件埋点->课后作业
-                EventHelper.addEvent(EventConstants.EVENT_ID_HOMEWORK_FOR_TEACHER);
-                break;
-            case R.id.tv_course_comment:
-                //课后评价
-                ARouter.getInstance().build(RouterPath.CommentCenter.TEACHER_COURSE_COMMENT)
-                        .navigation();
-                EventHelper.addEvent(EventConstants.EVENT_ID_EVALUATION_FOR_TEACHER);
-                break;
 //            case R.id.ll_badge:
 //                //显示徽章说明
 //                showBadgeDialog();
@@ -396,15 +357,6 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                 //联系我们
                 WebStartHelper.startContactUs();
                 break;
-            case R.id.tv_award:
-                //活动领奖
-                WebStartHelper.startAwardPage();
-                break;
-            case R.id.tv_mine_courseware:
-                //我的课件
-                ARouter.getInstance().build(RouterPath.MineCenter.MINE_COURSE_WARE)
-                        .navigation();
-                break;
             case R.id.tv_customer:
                 if (!TextUtils.isEmpty(customerId)) {
                     openCustomerService();
@@ -473,6 +425,75 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                     .navigation();
             return;
         }
+
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TEACH_TOOLS_MINE_LIVE)) {
+            //开启直播
+            if (liveFlag == 0) {
+                ARouter.getInstance()
+                        .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                        .withString(WebConstants.WEB_URL, WebConstants.TEACHER_OPEN_LIVE)
+                        .navigation();
+            } else {
+                ARouter.getInstance().build(RouterPath.LiveCenter.TEACHER_LIVE_LIST)
+                        .navigation();
+                EventHelper.addEvent(EventConstants.EVENT_ID_MINE_LIVE_FOR_TEACHER);
+            }
+            return;
+        }
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TEACH_TOOLS_GROUP_COURSE)) {
+            //小组课
+            ARouter.getInstance().build(RouterPath.CourseCenter.TEACHER_MINE_GROUP_COURSE)
+                    .navigation();
+            return;
+        }
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TEACH_TOOLS_LIVE_COURSE)) {
+            //直播课
+            ARouter.getInstance().build(RouterPath.CourseCenter.TEACHER_MINE_LIVE_COURSE)
+                    .navigation();
+            EventHelper.addEvent(EventConstants.EVENT_ID_MINE_LIVE_COURSE_FOR_TEACHER);
+            return;
+        }
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TEACH_TOOLS_VIDEO_COURSE)) {
+            //视频课
+            ARouter.getInstance().build(RouterPath.CourseCenter.TEACHER_MINE_VIDEO_COURSE)
+                    .navigation();
+            EventHelper.addEvent(EventConstants.EVENT_ID_MINE_VIDEO_COURSE_FOR_TEACHER);
+            return;
+        }
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TEACH_TOOLS_PIANO_ROOM)) {
+            //云库琴房
+            ARouter.getInstance()
+                    .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                    .withString(WebConstants.WEB_URL, WebConstants.PIANO_ROOM)
+                    .navigation();
+            return;
+        }
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TEACH_TOOLS_HOMEWORK)) {
+            //课后作业
+            ARouter.getInstance().build(RouterPath.WorkCenter.TEACHER_WORK_HOMEWORK)
+                    .navigation();
+            //事件埋点->课后作业
+            EventHelper.addEvent(EventConstants.EVENT_ID_HOMEWORK_FOR_TEACHER);
+            return;
+        }
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TEACH_TOOLS_COMMENT)) {
+            //课后评价
+            ARouter.getInstance().build(RouterPath.CommentCenter.TEACHER_COURSE_COMMENT)
+                    .navigation();
+            EventHelper.addEvent(EventConstants.EVENT_ID_EVALUATION_FOR_TEACHER);
+            return;
+        }
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TEACH_TOOLS_MINE_COURSEWARE)) {
+            //我的课件
+            ARouter.getInstance().build(RouterPath.MineCenter.MINE_COURSE_WARE)
+                    .navigation();
+            return;
+        }
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TEACH_TOOLS_EVENT_PRIZE)) {
+            //活动领奖
+            WebStartHelper.startAwardPage();
+            return;
+        }
     }
 
     private void goStyle() {

+ 44 - 3
teacher/src/main/java/com/cooleshow/teacher/widgets/helper/MineFragmentToolsHelper.java

@@ -21,13 +21,37 @@ public class MineFragmentToolsHelper {
     public static final String TYPE_MINE_COUPON = "COUPON";//我的优惠券
     public static final String TYPE_MINE_UPLOAD_MUSIC_SHEET = "TYPE_MINE_UPLOAD_MUSIC_SHEET";//上传曲谱
     public static final String TYPE_MINE_WORKS = "TYPE_MINE_WORKS";//我的作品
+
+    public static final String TEACH_TOOLS_MINE_LIVE = "TOOL_MINE_LIVE";//我的直播
+    public static final String TEACH_TOOLS_GROUP_COURSE = "TOOL_GROUP_COURSE";//小组课
+    public static final String TEACH_TOOLS_LIVE_COURSE = "TOOL_LIVE_COURSE";//直播课
+    public static final String TEACH_TOOLS_VIDEO_COURSE = "TOOL_VIDEO_COURSE";//视频课
+    public static final String TEACH_TOOLS_PIANO_ROOM = "TOOL_PIANO_ROOM";//云库琴房
+    public static final String TEACH_TOOLS_HOMEWORK = "TOOL_HOMEWORK";//课后作业
+    public static final String TEACH_TOOLS_COMMENT = "TOOL_COMMENT";//课后评价
+    public static final String TEACH_TOOLS_MINE_COURSEWARE = "TOOL_MINE_COURSEWARE";//我的课件
+    public static final String TEACH_TOOLS_EVENT_PRIZE = "TOOL_EVENT_PRIZE";//活动奖品
+
+    //常用工具
     public static final String[] TYPES = new String[]{TYPE_MINE_HOME_PAGE, TYPE_MINE_INCOME,
-            TYPE_MINE_STYLE, TYPE_MINE_GOODS_ORDER, TYPE_MINE_COURSE, TYPE_MINE_COUPON,TYPE_MINE_MUSIC_SHEET,TYPE_MINE_UPLOAD_MUSIC_SHEET,TYPE_MINE_WORKS};
+            TYPE_MINE_STYLE, TYPE_MINE_GOODS_ORDER, TYPE_MINE_COURSE, TYPE_MINE_COUPON, TYPE_MINE_MUSIC_SHEET, TYPE_MINE_UPLOAD_MUSIC_SHEET, TYPE_MINE_WORKS};
     public static final String[] TITLES = new String[]{"我的主页", "我的收入",
-            "个人风采", "商品订单", "我的课程", "我的优惠券","我的乐谱","上传乐谱","我的作品"};
+            "个人风采", "商品订单", "我的课程", "我的优惠券", "我的乐谱", "上传乐谱", "我的作品"};
     public static final int[] ICON_DRAWABLES = new int[]{R.drawable.icon_mine_page, R.drawable.icon_mine_income,
             R.drawable.icon_mine_style, R.drawable.icon_goods_order
-            , R.drawable.icon_mine_course, R.drawable.icon_mine_coupon,R.drawable.icon_mine_sheet_music, R.drawable.icon_mine_upload_music_sheet,R.drawable.icon_mine_works};
+            , R.drawable.icon_mine_course, R.drawable.icon_mine_coupon, R.drawable.icon_mine_sheet_music, R.drawable.icon_mine_upload_music_sheet, R.drawable.icon_mine_works};
+
+
+
+    //教学工具
+    public static final String[] TEACHER_TOOLS_TYPES = new String[]{TEACH_TOOLS_MINE_LIVE, TEACH_TOOLS_GROUP_COURSE,
+            TEACH_TOOLS_LIVE_COURSE, TEACH_TOOLS_VIDEO_COURSE, TEACH_TOOLS_PIANO_ROOM, TEACH_TOOLS_HOMEWORK, TEACH_TOOLS_COMMENT, TEACH_TOOLS_MINE_COURSEWARE, TEACH_TOOLS_EVENT_PRIZE};
+    public static final String[] TEACHER_TOOLS_TITLES = new String[]{"我的直播", "小组课",
+            "直播课", "视频课", "云库琴房", "课后作业", "课后评价", "我的课件", "活动奖品"};
+    public static final int[] TEACHER_TOOLS_ICON_DRAWABLES = new int[]{R.drawable.icon_open_live, R.drawable.icon_mine_group_course,
+            R.drawable.icon_live_course, R.drawable.icon_video_course
+            , R.drawable.icon_mine_piano_course, R.drawable.icon_mine_homework, R.drawable.icon_mine_course_comment,
+            R.drawable.icon_mine_courseware, R.drawable.icon_mine_award};
 
     public static ArrayList<MineToolMenuBean> getData(String... filterDatas) {
         ArrayList<MineToolMenuBean> list = new ArrayList<>();
@@ -46,6 +70,23 @@ public class MineFragmentToolsHelper {
         return list;
     }
 
+    public static ArrayList<MineToolMenuBean> getTeachTools(String... filterDatas) {
+        ArrayList<MineToolMenuBean> list = new ArrayList<>();
+        for (int i = 0; i < TEACHER_TOOLS_TYPES.length; i++) {
+            String type = TEACHER_TOOLS_TYPES[i];
+            boolean containFilterData = isContainFilterData(type, filterDatas);
+            if (containFilterData) {
+                continue;
+            }
+            MineToolMenuBean mineToolMenuBean = new MineToolMenuBean();
+            mineToolMenuBean.title = TEACHER_TOOLS_TITLES[i];
+            mineToolMenuBean.drawable = TEACHER_TOOLS_ICON_DRAWABLES[i];
+            mineToolMenuBean.type = TEACHER_TOOLS_TYPES[i];
+            list.add(mineToolMenuBean);
+        }
+        return list;
+    }
+
     private static boolean isContainFilterData(String target, String... datas) {
         if (datas == null || datas.length == 0) {
             return false;

BIN
teacher/src/main/res/drawable-xhdpi/icon_mine_group_course.png


BIN
teacher/src/main/res/drawable-xxhdpi/icon_mine_group_course.png


+ 78 - 0
teacher/src/main/res/layout/fragment_mine_group_course.xml

@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/refreshLayout"
+        android:layout_marginTop="12dp"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        app:srlEnableLoadMore="true"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
+
+
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:layout_marginStart="14dp"
+            android:layout_marginEnd="14dp"
+            android:id="@+id/recyclerView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:overScrollMode="never"
+            android:scrollbars="none" />
+    </com.scwang.smart.refresh.layout.SmartRefreshLayout>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/cl_empty_live_flag"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:visibility="gone"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
+
+
+        <ImageView
+            android:id="@+id/im_empty_logo"
+            android:layout_width="@dimen/dp_260"
+            android:layout_height="@dimen/dp_230"
+            android:layout_marginTop="8dp"
+            android:background="@drawable/icon_empty_mine_course"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/tv_empty_hint"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="14dp"
+            android:gravity="center"
+            android:lineSpacingExtra="4dp"
+            android:text="您尚未开通直播服务\n开通后即可创建直播课程"
+            android:textColor="@color/color_999999"
+            android:textSize="@dimen/sp_16"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/im_empty_logo" />
+
+        <TextView
+            android:id="@+id/tv_open"
+            android:layout_width="@dimen/dp_196"
+            android:layout_height="@dimen/dp_44"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginTop="25dp"
+            android:background="@drawable/shape_course_status_ing"
+            android:gravity="center"
+            android:text="立即开通"
+            android:textColor="@color/white"
+            android:textSize="@dimen/sp_14"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/tv_empty_hint" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</FrameLayout>

+ 6 - 128
teacher/src/main/res/layout/fragment_mine_layout.xml

@@ -638,7 +638,6 @@
                 app:layout_constraintBottom_toTopOf="@+id/bottom_view_line"
                 app:layout_constraintTop_toBottomOf="@+id/top_bottom_view" />
 
-
             <TextView
                 android:id="@+id/tv_tools_teaching"
                 android:layout_width="wrap_content"
@@ -653,137 +652,16 @@
                 app:layout_constraintLeft_toLeftOf="@+id/view_bottom_bg"
                 app:layout_constraintTop_toTopOf="@+id/view_bottom_bg" />
 
-
-            <TextView
-                android:id="@+id/tv_open_live"
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/recycler_view_teach_tools"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="13dp"
-                android:drawableTop="@drawable/icon_open_live"
-                android:drawablePadding="@dimen/dp_3"
-                android:gravity="center"
-                android:includeFontPadding="false"
-                android:text="我的直播"
-                android:textColor="@color/color_333333"
-                android:textSize="@dimen/sp_13"
+                android:overScrollMode="never"
+                android:scrollbars="none"
                 app:layout_constraintLeft_toLeftOf="@+id/view_bottom_bg"
-                app:layout_constraintRight_toLeftOf="@+id/tv_live_course"
-                app:layout_constraintTop_toBottomOf="@+id/tv_tools_teaching" />
-
-
-            <TextView
-                android:id="@+id/tv_live_course"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:drawableTop="@drawable/icon_live_course"
-                android:drawablePadding="@dimen/dp_3"
-                android:gravity="center"
-                android:includeFontPadding="false"
-                android:minWidth="@dimen/dp_52"
-                android:text="直播课"
-                android:textColor="@color/color_333333"
-                android:textSize="@dimen/sp_13"
-                app:layout_constraintLeft_toRightOf="@+id/tv_open_live"
-                app:layout_constraintRight_toLeftOf="@+id/tv_video_course"
-                app:layout_constraintTop_toTopOf="@+id/tv_open_live" />
-
-            <TextView
-                android:id="@+id/tv_video_course"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:drawableTop="@drawable/icon_video_course"
-                android:drawablePadding="@dimen/dp_3"
-                android:gravity="center"
-                android:includeFontPadding="false"
-                android:minWidth="@dimen/dp_52"
-                android:text="视频课"
-                android:textColor="@color/color_333333"
-                android:textSize="@dimen/sp_13"
-                app:layout_constraintLeft_toRightOf="@+id/tv_live_course"
-                app:layout_constraintRight_toLeftOf="@+id/tv_piano_course"
-                app:layout_constraintTop_toTopOf="@+id/tv_open_live" />
-
-            <TextView
-                android:id="@+id/tv_piano_course"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:drawableTop="@drawable/icon_mine_piano_course"
-                android:drawablePadding="@dimen/dp_3"
-                android:gravity="center"
-                android:includeFontPadding="false"
-                android:minWidth="48dp"
-                android:text="云酷琴房"
-                android:textColor="@color/color_333333"
-                android:textSize="@dimen/sp_13"
-                app:layout_constraintLeft_toRightOf="@+id/tv_video_course"
                 app:layout_constraintRight_toRightOf="@+id/view_bottom_bg"
-                app:layout_constraintTop_toTopOf="@+id/tv_open_live" />
-
-
-            <TextView
-                android:id="@+id/tv_homework"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="14dp"
-                android:drawableTop="@drawable/icon_mine_homework"
-                android:drawablePadding="@dimen/dp_3"
-                android:gravity="center"
-                android:includeFontPadding="false"
-                android:minWidth="48dp"
-                android:text="课后作业"
-                android:textColor="@color/color_333333"
-                android:textSize="@dimen/sp_13"
-                app:layout_constraintLeft_toLeftOf="@+id/tv_open_live"
-                app:layout_constraintRight_toRightOf="@+id/tv_open_live"
-                app:layout_constraintTop_toBottomOf="@+id/tv_open_live" />
-
-            <TextView
-                android:id="@+id/tv_course_comment"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:drawableTop="@drawable/icon_mine_course_comment"
-                android:drawablePadding="@dimen/dp_3"
-                android:gravity="center"
-                android:includeFontPadding="false"
-                android:minWidth="48dp"
-                android:text="课后评价"
-                android:textColor="@color/color_333333"
-                android:textSize="@dimen/sp_13"
-                app:layout_constraintLeft_toLeftOf="@+id/tv_live_course"
-                app:layout_constraintRight_toRightOf="@+id/tv_live_course"
-                app:layout_constraintTop_toTopOf="@+id/tv_homework" />
-
-            <TextView
-                android:id="@+id/tv_mine_courseware"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:drawableTop="@drawable/icon_mine_courseware"
-                android:drawablePadding="@dimen/dp_3"
-                android:gravity="center"
-                android:includeFontPadding="false"
-                android:minWidth="48dp"
-                android:text="我的课件"
-                android:textColor="@color/color_333333"
-                android:textSize="@dimen/sp_13"
-                app:layout_constraintLeft_toLeftOf="@+id/tv_video_course"
-                app:layout_constraintRight_toRightOf="@+id/tv_video_course"
-                app:layout_constraintTop_toTopOf="@+id/tv_homework" />
+                app:layout_constraintTop_toBottomOf="@+id/tv_tools_teaching" />
 
-            <TextView
-                android:id="@+id/tv_award"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:drawableTop="@drawable/icon_mine_award"
-                android:drawablePadding="@dimen/dp_3"
-                android:gravity="center"
-                android:includeFontPadding="false"
-                android:minWidth="48dp"
-                android:text="活动奖品"
-                android:textColor="@color/color_333333"
-                android:textSize="@dimen/sp_13"
-                app:layout_constraintLeft_toLeftOf="@+id/tv_piano_course"
-                app:layout_constraintRight_toRightOf="@+id/tv_piano_course"
-                app:layout_constraintTop_toTopOf="@+id/tv_homework" />
 
             <View
                 android:id="@+id/bottom_view_line"
@@ -791,7 +669,7 @@
                 android:layout_height="1px"
                 android:layout_marginTop="30dp"
                 app:layout_constraintLeft_toLeftOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/tv_award" />
+                app:layout_constraintTop_toBottomOf="@+id/recycler_view_teach_tools" />
 
             <androidx.constraintlayout.widget.ConstraintLayout
                 android:id="@+id/cs_menu_usually"

+ 25 - 0
teacher/src/main/res/layout/item_mine_teach_tool_layout.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:gravity="center"
+    android:layout_marginTop="15dp"
+    android:layout_height="wrap_content">
+
+    <ImageView
+        android:layout_gravity="center_horizontal"
+        android:id="@+id/iv_icon"
+        android:layout_width="42dp"
+        android:layout_height="42dp"
+        tools:src="@drawable/icon_open_live" />
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_gravity="center_horizontal"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="44dp"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_13"
+        tools:text="我的主页" />
+</FrameLayout>

+ 162 - 0
teacher/src/main/res/layout/layout_mine_group_course_item.xml

@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginBottom="12dp"
+    android:background="@drawable/bg_white_10dp"
+    android:paddingStart="12dp"
+    android:paddingEnd="12dp"
+    android:paddingBottom="14dp">
+
+    <TextView
+        android:drawableStart="@drawable/icon_live_course_time_tag"
+        android:id="@+id/tv_time"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="12dp"
+        android:includeFontPadding="false"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_14"
+        android:textStyle="bold"
+        android:drawablePadding="6dp"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:text="开课时间:2024-11-16 09:30" />
+
+    <com.cooleshow.base.widgets.QMUIRadiusImageView
+        android:id="@+id/iv_bg"
+        android:layout_width="0dp"
+        app:layout_constraintDimensionRatio="h,16:9"
+        app:layout_constraintRight_toRightOf="parent"
+        android:layout_height="0dp"
+        android:layout_marginTop="12dp"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tv_time"
+        app:qmui_corner_radius="6dp" />
+
+    <TextView
+        android:id="@+id/tv_course_name"
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/dp_19"
+        android:layout_marginTop="8dp"
+        android:layout_marginStart="@dimen/dp_8"
+        android:background="@drawable/shape_66000000_3dp"
+        android:gravity="center"
+        android:includeFontPadding="false"
+        android:paddingStart="@dimen/dp_6"
+        android:paddingEnd="@dimen/dp_6"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_12"
+        app:layout_constraintTop_toTopOf="@+id/iv_bg"
+        app:layout_constraintLeft_toLeftOf="@+id/iv_bg"
+        tools:text="单簧管" />
+
+    <TextView
+        android:id="@+id/tv_course_status_tip"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:background="@drawable/shape_ffe7e7_15dp_left"
+        android:gravity="center"
+        android:paddingStart="12dp"
+        android:paddingTop="3dp"
+        android:paddingEnd="12dp"
+        android:paddingBottom="3dp"
+        android:text="销售中"
+        android:textColor="@color/color_ff1919"
+        android:textSize="@dimen/sp_10"
+        app:layout_constraintBottom_toBottomOf="@+id/tv_course_name"
+        app:layout_constraintRight_toRightOf="@+id/iv_bg"
+        app:layout_constraintTop_toTopOf="@+id/tv_course_name" />
+
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:ellipsize="end"
+        android:includeFontPadding="false"
+        android:maxLines="1"
+        android:textColor="@color/color_1a1a1a"
+        android:textSize="@dimen/sp_16"
+        android:textStyle="bold"
+        android:layout_marginTop="8dp"
+        app:layout_constraintLeft_toLeftOf="@+id/iv_bg"
+        app:layout_constraintRight_toRightOf="@+id/iv_bg"
+        app:layout_constraintTop_toBottomOf="@+id/iv_bg"
+        app:layout_constraintVertical_chainStyle="packed"
+        tools:text="张豆张豆豆豆" />
+
+    <TextView
+        android:id="@+id/tv_des"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:ellipsize="end"
+        android:includeFontPadding="false"
+        android:maxLines="1"
+        android:textColor="@color/color_777777"
+        android:textSize="@dimen/sp_14"
+        android:layout_marginTop="4dp"
+        app:layout_constraintLeft_toLeftOf="@+id/iv_bg"
+        app:layout_constraintRight_toRightOf="@+id/iv_bg"
+        app:layout_constraintTop_toBottomOf="@+id/tv_title"
+        tools:text="国际著名长笛演奏家、教育家子珊女士为您讲教育家子珊女士为您讲教育家子珊女士为您讲" />
+
+    <TextView
+        android:id="@+id/tv_buy_num"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="11dp"
+        android:background="@drawable/shape_12ff802c_2dp"
+        android:textColor="@color/color_ff6827"
+        android:textSize="@dimen/sp_12"
+        android:visibility="visible"
+        android:paddingStart="4dp"
+        android:paddingEnd="4dp"
+        android:paddingTop="3dp"
+        android:paddingBottom="3dp"
+        android:includeFontPadding="false"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tv_des"
+        tools:text="6人已购买" />
+
+
+    <TextView
+        android:id="@+id/tv_price"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="¥120"
+        android:textColor="@color/color_f44541"
+        android:textSize="@dimen/sp_20"
+        android:textStyle="bold"
+        android:includeFontPadding="false"
+        app:layout_constraintTop_toTopOf="@+id/tv_buy_num"
+        app:layout_constraintBottom_toBottomOf="@+id/tv_buy_num"
+        app:layout_constraintRight_toLeftOf="@+id/tv_price_unit" />
+
+    <TextView
+        android:includeFontPadding="false"
+        android:id="@+id/tv_price_unit"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingStart="2dp"
+        android:text="/4课时"
+        android:textColor="@color/color_999999"
+        android:textSize="@dimen/sp_12"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintBaseline_toBaselineOf="@+id/tv_price" />
+
+    <ImageView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="5dp"
+        android:src="@drawable/icon_chat_small"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="@+id/tv_title"
+        app:layout_constraintLeft_toRightOf="@+id/tv_title"
+        app:layout_constraintTop_toTopOf="@+id/tv_title" />
+
+
+
+</androidx.constraintlayout.widget.ConstraintLayout>