فهرست منبع

修改老师端个人中心常用工具,改成列表形式

Pq 2 سال پیش
والد
کامیت
13657df7a0

+ 25 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/MineCommonToolAdapter.java

@@ -0,0 +1,25 @@
+package com.cooleshow.teacher.bean;
+
+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 androidx.annotation.NonNull;
+
+/**
+ * Author by pq, Date on 2022/9/8.
+ */
+public class MineCommonToolAdapter extends BaseQuickAdapter<MineToolMenuBean, BaseViewHolder> {
+    public MineCommonToolAdapter() {
+        super(R.layout.item_mine_common_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 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/MineToolMenuBean.java

@@ -0,0 +1,13 @@
+package com.cooleshow.teacher.bean;
+
+import androidx.annotation.DrawableRes;
+
+/**
+ * Author by pq, Date on 2022/9/8.
+ */
+public class MineToolMenuBean {
+    public String title;
+    public String type;
+    @DrawableRes
+    public int drawable;
+}

+ 93 - 14
teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java

@@ -6,6 +6,8 @@ import android.view.View;
 import android.widget.TextView;
 
 import com.alibaba.android.arouter.launcher.ARouter;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemClickListener;
 import com.cooleshow.base.common.WebConstants;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
@@ -16,6 +18,8 @@ import com.cooleshow.base.utils.Utils;
 import com.cooleshow.base.utils.helper.WebStartHelper;
 import com.cooleshow.base.widgets.DialogUtil;
 import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.MineCommonToolAdapter;
+import com.cooleshow.teacher.bean.MineToolMenuBean;
 import com.cooleshow.teacher.bean.TeacherPromoteIncomeBean;
 import com.cooleshow.teacher.bean.TeacherUserInfo;
 import com.cooleshow.teacher.constants.TeacherInfoConstants;
@@ -23,14 +27,19 @@ import com.cooleshow.teacher.contract.MineContract;
 import com.cooleshow.teacher.databinding.FragmentMineLayoutBinding;
 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.helper.UserHelper;
 import com.tbruyelle.rxpermissions3.RxPermissions;
 
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.GridLayoutManager;
+
 /**
  * Author by pq, Date on 2022/5/9.
  */
 public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, MinePresenter> implements MineContract.MineView, View.OnClickListener {
     private String teacherCertStatus = TeacherInfoConstants.ENTRY_STATUS_UNPAALY;
+    private MineCommonToolAdapter mMineCommonToolAdapter;
 
     @Override
     protected void initView(View rootView) {
@@ -74,6 +83,24 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
     @Override
     protected void initData() {
         mViewBinding.llBadge.hideVip();
+        mMineCommonToolAdapter = new MineCommonToolAdapter();
+        GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 4);
+        mViewBinding.recyclerViewTools.setLayoutManager(gridLayoutManager);
+        mViewBinding.recyclerViewTools.setAdapter(mMineCommonToolAdapter);
+        mMineCommonToolAdapter.setNewInstance(MineFragmentToolsHelper.getData(null));
+        initListener();
+    }
+
+    private void initListener() {
+        mMineCommonToolAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                if (position < mMineCommonToolAdapter.getData().size()) {
+                    MineToolMenuBean mineToolMenuBean = mMineCommonToolAdapter.getData().get(position);
+                    handleToolClick(mineToolMenuBean.type);
+                }
+            }
+        });
     }
 
     //是否有直播权限 0 否 1 是
@@ -174,22 +201,10 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                 mViewBinding.ivUnCertificationTip.setVisibility(View.GONE);
                 break;
             case R.id.tv_mine_page:
-                if (TextUtils.equals(teacherCertStatus, TeacherInfoConstants.ENTRY_STATUS_PASS)) {
-                    //个人主页
-                    ARouter.getInstance().build(RouterPath.MineCenter.HOME_PAGE)
-                            .navigation();
-                } else {
-                    goCert();
-                }
+                goHomePage();
                 break;
             case R.id.tv_mine_style:
-                if (TextUtils.equals(teacherCertStatus, TeacherInfoConstants.ENTRY_STATUS_PASS)) {
-                    //个人风采
-                    ARouter.getInstance().build(RouterPath.MineCenter.MINE_STYLE_PAGE)
-                            .navigation();
-                } else {
-                    goCert();
-                }
+                goStyle();
                 break;
             case R.id.iv_avatar:
                 //个人设置
@@ -339,6 +354,70 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
         }
     }
 
+    private void handleToolClick(String type) {
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TYPE_MINE_HOME_PAGE)) {
+            //我的主页
+            goHomePage();
+            return;
+        }
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TYPE_MINE_INCOME)) {
+            //我的收入
+            ARouter.getInstance().build(RouterPath.IncomeCenter.TEACHER_MINE_INCOME)
+                    .navigation();
+            return;
+        }
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TYPE_MINE_STYLE)) {
+            //个人风采
+            goStyle();
+            return;
+        }
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TYPE_MINE_GOODS_ORDER)) {
+            //商品订单
+            ARouter.getInstance()
+                    .build(RouterPath.WebCenter.ACTIVITY_HTML)
+                    .withString(WebConstants.WEB_URL, WebConstants.MALL_GOODS_ORDER)
+                    .navigation();
+            return;
+        }
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TYPE_MINE_MUSIC_SHEET)) {
+            //我的曲谱
+            ARouter.getInstance().build(RouterPath.ScoreCenter.TEACHER_MINE_SCORE)
+                    .navigation();
+            return;
+        }
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TYPE_MINE_COURSE)) {
+            //我的曲谱
+            ARouter.getInstance().build(RouterPath.CourseCenter.TEACHER_MINE_COURSE)
+                    .navigation();
+            return;
+        }
+        if (TextUtils.equals(type, MineFragmentToolsHelper.TYPE_MINE_COUPON)) {
+            //我的优惠券
+            WebStartHelper.startCouponsPage();
+            return;
+        }
+    }
+
+    private void goStyle() {
+        if (TextUtils.equals(teacherCertStatus, TeacherInfoConstants.ENTRY_STATUS_PASS)) {
+            //个人风采
+            ARouter.getInstance().build(RouterPath.MineCenter.MINE_STYLE_PAGE)
+                    .navigation();
+        } else {
+            goCert();
+        }
+    }
+
+    private void goHomePage() {
+        if (TextUtils.equals(teacherCertStatus, TeacherInfoConstants.ENTRY_STATUS_PASS)) {
+            //个人主页
+            ARouter.getInstance().build(RouterPath.MineCenter.HOME_PAGE)
+                    .navigation();
+        } else {
+            goCert();
+        }
+    }
+
     private void showBadgeDialog() {
         BadgeDesDialog badgeDesDialog = new BadgeDesDialog(getContext());
         badgeDesDialog.show();

+ 62 - 0
teacher/src/main/java/com/cooleshow/teacher/widgets/helper/MineFragmentToolsHelper.java

@@ -0,0 +1,62 @@
+package com.cooleshow.teacher.widgets.helper;
+
+import android.text.TextUtils;
+
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.bean.MineToolMenuBean;
+
+import java.util.ArrayList;
+
+/**
+ * Author by pq, Date on 2022/9/8.
+ * 用于创建老师端个人中心 常用工具模块
+ */
+public class MineFragmentToolsHelper {
+    public static final String TYPE_MINE_HOME_PAGE = "HOME_PAGE";//我的主页
+    public static final String TYPE_MINE_INCOME = "INCOME";//我的收入
+    public static final String TYPE_MINE_STYLE = "STYLE";//个人风采
+    public static final String TYPE_MINE_GOODS_ORDER = "GOODS_ORDER";//商品订单
+    public static final String TYPE_MINE_MUSIC_SHEET = "MUSIC_SHEET";//我的乐谱
+    public static final String TYPE_MINE_COURSE = "COURSE";//我的课程
+    public static final String TYPE_MINE_COUPON = "COUPON";//我的优惠券
+    public static final String[] TYPES = new String[]{TYPE_MINE_HOME_PAGE, TYPE_MINE_INCOME,
+            TYPE_MINE_STYLE, TYPE_MINE_GOODS_ORDER,
+            TYPE_MINE_MUSIC_SHEET, TYPE_MINE_COURSE, TYPE_MINE_COUPON};
+    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_sheet_music, R.drawable.icon_mine_course, R.drawable.icon_mine_coupon};
+
+    public static ArrayList<MineToolMenuBean> getData(String... filterDatas) {
+        ArrayList<MineToolMenuBean> list = new ArrayList<>();
+        for (int i = 0; i < TITLES.length; i++) {
+            String title = TITLES[i];
+            boolean containFilterData = isContainFilterData(title, filterDatas);
+            if (containFilterData) {
+                continue;
+            }
+            MineToolMenuBean mineToolMenuBean = new MineToolMenuBean();
+            mineToolMenuBean.title = TITLES[i];
+            mineToolMenuBean.drawable = ICON_DRAWABLES[i];
+            mineToolMenuBean.type = TYPES[i];
+            list.add(mineToolMenuBean);
+        }
+        return list;
+    }
+
+    private static boolean isContainFilterData(String target, String... datas) {
+        if (datas == null || datas.length == 0) {
+            return false;
+        }
+        for (int i = 0; i < datas.length; i++) {
+            String data = datas[i];
+            if (TextUtils.equals(data, target)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+}

+ 22 - 3
teacher/src/main/res/layout/fragment_mine_layout.xml

@@ -79,23 +79,23 @@
 
 
         <ImageView
-            android:visibility="gone"
             android:id="@+id/iv_edu_cert"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginStart="8dp"
             android:src="@drawable/icon_education_cert"
+            android:visibility="gone"
             app:layout_constraintBottom_toBottomOf="@+id/tv_nickname"
             app:layout_constraintLeft_toRightOf="@+id/tv_nickname"
             app:layout_constraintTop_toTopOf="@+id/tv_nickname" />
 
         <ImageView
             android:id="@+id/iv_teacher_cert"
-            android:visibility="gone"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginStart="6dp"
             android:src="@drawable/icon_teacher_cert"
+            android:visibility="gone"
             app:layout_constraintBottom_toBottomOf="@+id/tv_nickname"
             app:layout_constraintLeft_toRightOf="@+id/iv_edu_cert"
             app:layout_constraintTop_toTopOf="@+id/tv_nickname" />
@@ -461,6 +461,18 @@
             app:layout_constraintLeft_toLeftOf="@+id/view_top_bg"
             app:layout_constraintTop_toTopOf="@+id/view_top_bg" />
 
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/recycler_view_tools"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="7dp"
+            android:layout_marginEnd="7dp"
+            android:overScrollMode="never"
+            android:scrollbars="none"
+            app:layout_constraintLeft_toLeftOf="@+id/view_top_bg"
+            app:layout_constraintRight_toRightOf="@+id/view_top_bg"
+            app:layout_constraintTop_toBottomOf="@+id/tv_tools_use" />
+
         <TextView
             android:id="@+id/tv_mine_page"
             android:layout_width="wrap_content"
@@ -473,6 +485,7 @@
             android:text="@string/mine_page_str"
             android:textColor="@color/color_333333"
             android:textSize="@dimen/sp_13"
+            android:visibility="gone"
             app:layout_constraintLeft_toLeftOf="@+id/view_top_bg"
             app:layout_constraintRight_toLeftOf="@+id/tv_mine_income"
             app:layout_constraintTop_toBottomOf="@+id/tv_tools_use" />
@@ -487,6 +500,7 @@
             android:text="我的收入"
             android:textColor="@color/color_333333"
             android:textSize="@dimen/sp_13"
+            android:visibility="gone"
             app:layout_constraintLeft_toRightOf="@+id/tv_mine_page"
             app:layout_constraintRight_toLeftOf="@+id/tv_mine_style"
             app:layout_constraintTop_toTopOf="@+id/tv_mine_page" />
@@ -502,6 +516,7 @@
             android:text="个人风采"
             android:textColor="@color/color_333333"
             android:textSize="@dimen/sp_13"
+            android:visibility="gone"
             app:layout_constraintLeft_toRightOf="@+id/tv_mine_income"
             app:layout_constraintRight_toLeftOf="@+id/iv_goods_order"
             app:layout_constraintTop_toTopOf="@+id/tv_mine_page" />
@@ -517,6 +532,7 @@
             android:text="商品订单"
             android:textColor="@color/color_333333"
             android:textSize="@dimen/sp_13"
+            android:visibility="gone"
             app:layout_constraintLeft_toRightOf="@+id/tv_mine_style"
             app:layout_constraintRight_toRightOf="@+id/view_top_bg"
             app:layout_constraintTop_toTopOf="@+id/tv_mine_style" />
@@ -534,6 +550,7 @@
             android:text="我的乐谱"
             android:textColor="@color/color_333333"
             android:textSize="@dimen/sp_13"
+            android:visibility="gone"
             app:layout_constraintLeft_toLeftOf="@+id/tv_mine_page"
             app:layout_constraintRight_toRightOf="@+id/tv_mine_page"
             app:layout_constraintTop_toBottomOf="@+id/tv_mine_page" />
@@ -550,6 +567,7 @@
             android:text="我的课程"
             android:textColor="@color/color_333333"
             android:textSize="@dimen/sp_13"
+            android:visibility="gone"
             app:layout_constraintLeft_toLeftOf="@+id/tv_mine_income"
             app:layout_constraintRight_toRightOf="@+id/tv_mine_income"
             app:layout_constraintTop_toTopOf="@+id/tv_sheet_music" />
@@ -566,6 +584,7 @@
             android:text="我的优惠券"
             android:textColor="@color/color_333333"
             android:textSize="@dimen/sp_13"
+            android:visibility="gone"
             app:layout_constraintLeft_toLeftOf="@+id/tv_mine_style"
             app:layout_constraintRight_toRightOf="@+id/tv_mine_style"
             app:layout_constraintTop_toTopOf="@+id/tv_sheet_music" />
@@ -576,7 +595,7 @@
             android:layout_height="1px"
             android:layout_marginTop="24dp"
             app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/tv_sheet_music" />
+            app:layout_constraintTop_toBottomOf="@+id/recycler_view_tools" />
 
         <View
             android:id="@+id/view_bottom_bg"

+ 25 - 0
teacher/src/main/res/layout/item_mine_common_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="40dp"
+        android:layout_height="40dp"
+        tools:src="@drawable/icon_mine_coupon" />
+
+    <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>