Procházet zdrojové kódy

添加课件列表页

Pq před 2 roky
rodič
revize
ca31618ec7
24 změnil soubory, kde provedl 643 přidání a 9 odebrání
  1. 1 0
      BaseLibrary/src/main/java/com/cooleshow/base/router/RouterPath.kt
  2. binární
      BaseLibrary/src/main/res/drawable-xhdpi/icon_check_select_default.png
  3. binární
      BaseLibrary/src/main/res/drawable-xhdpi/icon_search_grey.png
  4. binární
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_check_select_default.png
  5. binární
      BaseLibrary/src/main/res/drawable-xxhdpi/icon_search_grey.png
  6. 5 0
      BaseLibrary/src/main/res/drawable/shape_f8f8f8_18dp.xml
  7. 1 3
      live_teaching/src/main/java/com/daya/live_teaching/adapter/CoursewareAdapter.java
  8. binární
      live_teaching/src/main/res/drawable-xhdpi/icon_teaching_courseware.png
  9. binární
      live_teaching/src/main/res/drawable-xxhdpi/icon_teaching_courseware.png
  10. 0 0
      live_teaching/src/main/res/layout/item_teaching_courseware_list_layout.xml
  11. 7 1
      teacher/src/main/AndroidManifest.xml
  12. 124 0
      teacher/src/main/java/com/cooleshow/teacher/adapter/CoursewareListAdapter.java
  13. 19 0
      teacher/src/main/java/com/cooleshow/teacher/api/APIService.java
  14. 6 0
      teacher/src/main/java/com/cooleshow/teacher/contract/CoursewareContract.java
  15. 62 0
      teacher/src/main/java/com/cooleshow/teacher/presenter/mine/CoursewareListPresenter.java
  16. 6 0
      teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java
  17. 215 1
      teacher/src/main/java/com/cooleshow/teacher/ui/mine/CoursewareListActivity.java
  18. binární
      teacher/src/main/res/drawable-xhdpi/icon_courseware_failure.png
  19. binární
      teacher/src/main/res/drawable-xhdpi/icon_mine_courseware.png
  20. binární
      teacher/src/main/res/drawable-xxhdpi/icon_courseware_failure.png
  21. binární
      teacher/src/main/res/drawable-xxhdpi/icon_mine_courseware.png
  22. 110 0
      teacher/src/main/res/layout/activity_courseware_list_layout.xml
  23. 20 4
      teacher/src/main/res/layout/fragment_mine_layout.xml
  24. 67 0
      teacher/src/main/res/layout/item_courseware_list_layout.xml

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

@@ -151,6 +151,7 @@ object RouterPath {
             const val MINE_NETWORK_MONITORING = "/ui/mine/NetworkMonitoringActivity"
             const val MINE_EQUIPMENT_TEST = "/ui/mine/EquipmentTestActivity"
             const val MINE_UNBIND_BANKCARD = "/teacher/ui/mine/UnBindBankCardActivity"
+            const val MINE_COURSE_WARE = "/teacher/ui/mine/CoursewareListActivity"
         }
     }
 

binární
BaseLibrary/src/main/res/drawable-xhdpi/icon_check_select_default.png


binární
BaseLibrary/src/main/res/drawable-xhdpi/icon_search_grey.png


binární
BaseLibrary/src/main/res/drawable-xxhdpi/icon_check_select_default.png


binární
BaseLibrary/src/main/res/drawable-xxhdpi/icon_search_grey.png


+ 5 - 0
BaseLibrary/src/main/res/drawable/shape_f8f8f8_18dp.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/color_F8F8F8"/>
+    <corners android:radius="18dp"/>
+</shape>

+ 1 - 3
live_teaching/src/main/java/com/daya/live_teaching/adapter/CoursewareAdapter.java

@@ -1,10 +1,8 @@
 package com.daya.live_teaching.adapter;
 
-import android.view.View;
 import android.widget.ImageView;
 
 import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.loadmore.SimpleLoadMoreView;
 import com.chad.library.adapter.base.module.BaseLoadMoreModule;
 import com.chad.library.adapter.base.module.LoadMoreModule;
 import com.chad.library.adapter.base.viewholder.BaseViewHolder;
@@ -23,7 +21,7 @@ public class CoursewareAdapter extends BaseQuickAdapter<CoursewareListBean.RowsB
     private int currentSelectPos = -1;
 
     public CoursewareAdapter() {
-        super(R.layout.item_courseware_list_layout);
+        super(R.layout.item_teaching_courseware_list_layout);
     }
 
     @Override

binární
live_teaching/src/main/res/drawable-xhdpi/icon_teaching_courseware.png


binární
live_teaching/src/main/res/drawable-xxhdpi/icon_teaching_courseware.png


+ 0 - 0
live_teaching/src/main/res/layout/item_courseware_list_layout.xml → live_teaching/src/main/res/layout/item_teaching_courseware_list_layout.xml


+ 7 - 1
teacher/src/main/AndroidManifest.xml

@@ -334,7 +334,13 @@
             android:exported="false"
             android:launchMode="singleTask"
             android:screenOrientation="portrait"
-            android:windowSoftInputMode="adjustResize"></activity> <!-- 分享开始 -->
+            android:windowSoftInputMode="adjustResize"/> <!-- 分享开始 -->
+        <activity
+            android:name=".ui.mine.CoursewareListActivity"
+            android:windowSoftInputMode="adjustPan"
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="portrait" />
+
         <activity
             android:name=".wxapi.WXEntryActivity"
             android:configChanges="keyboardHidden|orientation|screenSize"

+ 124 - 0
teacher/src/main/java/com/cooleshow/teacher/adapter/CoursewareListAdapter.java

@@ -0,0 +1,124 @@
+package com.cooleshow.teacher.adapter;
+
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.ImageView;
+
+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.cooleshow.base.utils.GlideUtils;
+import com.cooleshow.teacher.R;
+import com.daya.live_teaching.model.CoursewareListBean;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import androidx.annotation.NonNull;
+
+/**
+ * Author by pq, Date on 2022/11/18.
+ */
+public class CoursewareListAdapter extends BaseQuickAdapter<CoursewareListBean.RowsBean, com.chad.library.adapter.base.viewholder.BaseViewHolder> implements LoadMoreModule {
+    private ArrayList<Integer> selectPosList;
+    private boolean isSelectMode = false;
+
+    public CoursewareListAdapter() {
+        super(R.layout.item_courseware_list_layout);
+    }
+
+    public void setSelectMode(boolean isSelectMode) {
+        this.isSelectMode = isSelectMode;
+        if (!isSelectMode) {
+            getSelectList().clear();
+        }
+        notifyDataSetChanged();
+    }
+
+    public boolean isSelectMode() {
+        return isSelectMode;
+    }
+
+    public void setSelectPos(Integer pos) {
+        if (getSelectList().contains(pos)) {
+            getSelectList().remove(pos);
+        } else {
+            getSelectList().add(pos);
+        }
+        notifyDataSetChanged();
+    }
+
+    private ArrayList<Integer> getSelectList() {
+        if (selectPosList == null) {
+            selectPosList = new ArrayList<>();
+        }
+        return selectPosList;
+    }
+
+    public String getSelectDataIds() {
+        if (selectPosList != null && selectPosList.size() > 0) {
+            StringBuilder stringBuilder = new StringBuilder();
+            for (int i = 0; i < selectPosList.size(); i++) {
+                Integer pos = selectPosList.get(i);
+                if (pos < getData().size()) {
+                    CoursewareListBean.RowsBean rowsBean = getData().get(pos);
+                    stringBuilder.append(rowsBean.id);
+                    if (i != selectPosList.size() - 1) {
+                        stringBuilder.append(",");
+                    }
+                }
+            }
+            return stringBuilder.toString();
+        }
+        return "";
+    }
+
+    @Override
+    protected void convert(@NonNull com.chad.library.adapter.base.viewholder.BaseViewHolder holder, CoursewareListBean.RowsBean rowsBean) {
+        //icon
+        ImageView iv_icon = holder.getView(R.id.iv_icon);
+        GlideUtils.INSTANCE.loadImage(getContext(), rowsBean.titleImg, iv_icon, R.drawable.icon_music_mark);
+
+        holder.setText(R.id.tv_name, rowsBean.musicSheetName);
+        View tv_failure = holder.getView(R.id.tv_failure);
+        if (TextUtils.equals(rowsBean.status, "0")) {
+            //失效
+            tv_failure.setVisibility(View.VISIBLE);
+        } else {
+            //有效
+            tv_failure.setVisibility(View.GONE);
+        }
+
+        ImageView iv_check = holder.getView(R.id.iv_check);
+        if (isSelectMode) {
+            iv_check.setVisibility(View.VISIBLE);
+            iv_check.setImageResource(isCheck(holder.getLayoutPosition()) ? R.drawable.icon_check_select : com.cooleshow.base.R.drawable.icon_check_select_default);
+        } else {
+            iv_check.setVisibility(View.GONE);
+        }
+    }
+
+    private boolean isCheck(int position) {
+        if (selectPosList != null && selectPosList.size() > 0) {
+            return selectPosList.contains(position);
+        } else {
+            return false;
+        }
+    }
+
+    public void selectAll() {
+        List<CoursewareListBean.RowsBean> data = getData();
+        getSelectList().clear();
+        for (int i = 0; i < data.size(); i++) {
+            getSelectList().add(i);
+        }
+        notifyDataSetChanged();
+    }
+
+
+    @NonNull
+    @Override
+    public BaseLoadMoreModule addLoadMoreModule(@NonNull BaseQuickAdapter<?, ?> baseQuickAdapter) {
+        return new BaseLoadMoreModule(baseQuickAdapter);
+    }
+}

+ 19 - 0
teacher/src/main/java/com/cooleshow/teacher/api/APIService.java

@@ -56,6 +56,7 @@ import com.cooleshow.teacher.bean.request.TeacherPracticeCourseEntry;
 import com.cooleshow.teacher.bean.request.UnBindCardEntry;
 import com.cooleshow.usercenter.bean.SetDetailBean;
 import com.cooleshow.usercenter.bean.UserInfo;
+import com.daya.live_teaching.model.CoursewareListBean;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -802,4 +803,22 @@ public interface APIService {
     @FormUrlEncoded
     @POST(TEACHER_GROUP + "teacher/defaultSubject")
     Observable<BaseResponse<Object>> syncSubjectFilter(@FieldMap Map<String, String> params);
+
+    /**
+     * 请求课件列表
+     *
+     * @param
+     * @return
+     */
+    @POST(TEACHER_GROUP+"courseCourseware/page")
+    Observable<BaseResponse<CoursewareListBean>> getCoursewareList(@Body RequestBody requestBody);
+
+    /**
+     * 删除课件
+     *
+     * @return
+     */
+    @FormUrlEncoded
+    @POST(TEACHER_GROUP + "courseCourseware/remove")
+    Observable<BaseResponse<Object>> delCourseware(@FieldMap Map<String, String> params);
 }

+ 6 - 0
teacher/src/main/java/com/cooleshow/teacher/contract/CoursewareContract.java

@@ -1,6 +1,7 @@
 package com.cooleshow.teacher.contract;
 
 import com.cooleshow.base.presenter.view.BaseView;
+import com.daya.live_teaching.model.CoursewareListBean;
 
 /**
  * 创建日期:2022/5/18 14:11
@@ -10,8 +11,13 @@ import com.cooleshow.base.presenter.view.BaseView;
  */
 public interface CoursewareContract {
     interface CoursewareView extends BaseView {
+        void getCoursewareListSuccess(int page, CoursewareListBean coursewareListBean);
 
+        void getCoursewareListError(int page);
+
+        void delCoursewareSuccess(String delDataIds);
     }
+
     interface Presenter {
     }
 }

+ 62 - 0
teacher/src/main/java/com/cooleshow/teacher/presenter/mine/CoursewareListPresenter.java

@@ -1,8 +1,24 @@
 package com.cooleshow.teacher.presenter.mine;
 
+import android.util.Log;
+
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.data.net.ApiException;
 import com.cooleshow.base.presenter.BasePresenter;
+import com.cooleshow.base.rx.BaseObserver;
+import com.cooleshow.base.utils.ErrorParse;
+import com.cooleshow.base.utils.ToastUtil;
+import com.cooleshow.teacher.api.APIService;
 import com.cooleshow.teacher.contract.AboutContract;
 import com.cooleshow.teacher.contract.CoursewareContract;
+import com.daya.live_teaching.api.retrofit.RetrofitUtil;
+import com.daya.live_teaching.callback.CoursewareDataResultCallBack;
+import com.daya.live_teaching.model.CoursewareListBean;
+
+import java.util.HashMap;
+
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
+import io.reactivex.rxjava3.schedulers.Schedulers;
 
 /**
  * 创建日期:2022/5/18 14:08
@@ -12,4 +28,50 @@ import com.cooleshow.teacher.contract.CoursewareContract;
  */
 public class CoursewareListPresenter extends BasePresenter<CoursewareContract.CoursewareView> implements CoursewareContract.Presenter {
 
+    public void getCoursewareList(boolean isShowLoading, String searchStr, int page) {
+        if (isShowLoading && getView() != null) {
+            getView().showLoading();
+        }
+        HashMap<String, Object> bodyMap = new HashMap<>();
+        bodyMap.put("idAndName", searchStr);
+        bodyMap.put("page", page);
+        bodyMap.put("rows", Constants.DEFAULT_DATA_SIZE);
+        addSubscribe(create(APIService.class).getCoursewareList(RetrofitUtil.createJsonRequest(bodyMap)), new BaseObserver<CoursewareListBean>(getView()) {
+            @Override
+            protected void onSuccess(CoursewareListBean data) {
+                if (getView() != null) {
+                    getView().getCoursewareListSuccess(page, data);
+                }
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+                if (getView() != null) {
+                    getView().getCoursewareListError(page);
+                }
+            }
+        });
+    }
+
+    public void delCourseware(String ids) {
+        if (getView() != null) {
+            getView().showLoading();
+        }
+        HashMap<String, String> map = new HashMap<>();
+        map.put("ids", ids);
+        addSubscribe(create(APIService.class).delCourseware(map), new BaseObserver<Object>(getView()) {
+            @Override
+            protected void onSuccess(Object data) {
+                if (getView() != null) {
+                    getView().delCoursewareSuccess(ids);
+                }
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+            }
+        });
+    }
 }

+ 6 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/main/MineFragment.java

@@ -83,6 +83,7 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
         mViewBinding.llBadge.setOnClickListener(this);
         mViewBinding.tvContactUs.setOnClickListener(this);
         mViewBinding.tvAward.setOnClickListener(this);
+        mViewBinding.tvMineCourseware.setOnClickListener(this);
     }
 
     @Override
@@ -381,6 +382,11 @@ public class MineFragment extends BaseMVPFragment<FragmentMineLayoutBinding, Min
                 //活动领奖
                 WebStartHelper.startAwardPage();
                 break;
+            case R.id.tv_mine_courseware:
+                //我的课件
+                ARouter.getInstance().build(RouterPath.MineCenter.MINE_COURSE_WARE)
+                        .navigation();
+                break;
         }
     }
 

+ 215 - 1
teacher/src/main/java/com/cooleshow/teacher/ui/mine/CoursewareListActivity.java

@@ -1,17 +1,112 @@
 package com.cooleshow.teacher.ui.mine;
 
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.View;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.chad.library.adapter.base.BaseQuickAdapter;
+import com.chad.library.adapter.base.listener.OnItemClickListener;
+import com.chad.library.adapter.base.listener.OnLoadMoreListener;
+import com.cooleshow.base.constanst.Constants;
+import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
+import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
+import com.cooleshow.base.widgets.EmptyViewLayout;
+import com.cooleshow.teacher.R;
+import com.cooleshow.teacher.adapter.CoursewareListAdapter;
+import com.cooleshow.teacher.contract.CoursewareContract;
 import com.cooleshow.teacher.databinding.ActivityCoursewareListLayoutBinding;
 import com.cooleshow.teacher.presenter.mine.CoursewareListPresenter;
+import com.daya.live_teaching.model.CoursewareListBean;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.LinearLayoutManager;
 
 /**
  * Author by pq, Date on 2022/11/18.
  */
-public class CoursewareListActivity extends BaseMVPActivity<ActivityCoursewareListLayoutBinding, CoursewareListPresenter> {
+@Route(path = RouterPath.MineCenter.MINE_COURSE_WARE)
+public class CoursewareListActivity extends BaseMVPActivity<ActivityCoursewareListLayoutBinding, CoursewareListPresenter> implements View.OnClickListener, CoursewareContract.CoursewareView {
+
+    private CoursewareListAdapter mListAdapter;
+    private String searchStr = "";
+    private int currentPage = 1;
+    private boolean hasNext = true;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        QMUIStatusBarHelper.setStatusBarLightMode(this);
+    }
 
     @Override
     protected void initView() {
+        initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "我的课件");
+        viewBinding.toolbarInclude.tvRightText.setVisibility(View.VISIBLE);
+        viewBinding.toolbarInclude.tvRightText.setText("编辑");
+        viewBinding.toolbarInclude.tvRightText.setOnClickListener(this);
+        viewBinding.tvDelete.setOnClickListener(this);
+        viewBinding.tvSearch.setOnClickListener(this);
+        viewBinding.recyclerView.setLayoutManager(new LinearLayoutManager(this));
+        mListAdapter = new CoursewareListAdapter();
+        EmptyViewLayout emptyViewLayout = new EmptyViewLayout(this);
+        emptyViewLayout.setContent(com.cooleshow.base.R.drawable.icon_empty_content, "暂无内容~");
+        mListAdapter.setEmptyView(emptyViewLayout);
+        viewBinding.recyclerView.setAdapter(mListAdapter);
+        initListener();
+    }
 
+    @Override
+    public void initData() {
+        super.initData();
+        refresh();
+    }
+
+    private void initListener() {
+        viewBinding.refreshLayout.setOnRefreshListener(refreshLayout -> {
+            refresh();
+        });
+
+        mListAdapter.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
+                boolean selectMode = mListAdapter.isSelectMode();
+                if (!selectMode) {
+                    return;
+                }
+                mListAdapter.setSelectPos(position);
+            }
+        });
+        mListAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
+            @Override
+            public void onLoadMore() {
+                //上拉加载
+                if (hasNext) {
+                    loadMore();
+                } else {
+                    mListAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        });
+    }
+
+    private void query(boolean isShowLoading) {
+        presenter.getCoursewareList(isShowLoading, searchStr, currentPage);
+    }
+
+    private void refresh() {
+        currentPage = 1;
+        query(true);
+    }
+
+    /**
+     * 加载更多
+     */
+    private void loadMore() {
+        currentPage++;
+        query(false);
     }
 
     @Override
@@ -23,4 +118,123 @@ public class CoursewareListActivity extends BaseMVPActivity<ActivityCoursewareLi
     protected CoursewareListPresenter createPresenter() {
         return new CoursewareListPresenter();
     }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == com.cooleshow.base.R.id.tv_right_text) {
+            if (mListAdapter.isSelectMode()) {
+                //全选
+                mListAdapter.selectAll();
+            } else {
+                //编辑->全选
+                if (mListAdapter.getData().size() > 0) {
+                    mListAdapter.setSelectMode(true);
+                    updateSelectAllUI();
+                }
+            }
+            return;
+        }
+
+        if (id == R.id.tv_delete) {
+            //删除
+            String selectDataIds = mListAdapter.getSelectDataIds();
+            if (!TextUtils.isEmpty(selectDataIds)) {
+                if (presenter != null) {
+                    presenter.delCourseware(selectDataIds);
+                }
+            }
+            mListAdapter.setSelectMode(false);
+            updateSelectAllUI();
+            return;
+        }
+
+        if (id == R.id.tv_search) {
+            //搜索
+            searchStr = viewBinding.etSearchContent.getText().toString().trim();
+            refresh();
+            return;
+        }
+    }
+
+    private void updateSelectAllUI() {
+        if (mListAdapter.isSelectMode()) {
+            viewBinding.toolbarInclude.tvRightText.setText("全选");
+            viewBinding.tvDelete.setVisibility(View.VISIBLE);
+        } else {
+            viewBinding.toolbarInclude.tvRightText.setText("编辑");
+            viewBinding.tvDelete.setVisibility(View.GONE);
+        }
+    }
+
+    @Override
+    public void getCoursewareListSuccess(int page, CoursewareListBean data) {
+        if (!checkActivityExist()) {
+            return;
+        }
+        if (data != null) {
+            viewBinding.refreshLayout.finishRefresh();
+            if (page == 1) {
+                mListAdapter.getData().clear();
+                mListAdapter.notifyDataSetChanged();
+                if (data.getRows() != null && data.getRows().size() > 0) {
+                    checkHasNext(data.getRows().size());
+                    mListAdapter.setNewInstance(data.getRows());
+                }
+            } else {
+                if (data.getRows() != null && data.getRows().size() > 0) {
+                    mListAdapter.getLoadMoreModule().loadMoreComplete();
+                    mListAdapter.addData(data.getRows());
+                    checkHasNext(data.getRows().size());
+                } else {
+                    mListAdapter.getLoadMoreModule().loadMoreEnd();
+                }
+            }
+        }
+    }
+
+    @Override
+    public void getCoursewareListError(int page) {
+        if (mListAdapter == null) {
+            return;
+        }
+        if (page == 1) {
+            viewBinding.refreshLayout.finishRefresh();
+        } else {
+            currentPage--;
+            mListAdapter.getLoadMoreModule().loadMoreFail();
+        }
+    }
+
+    @Override
+    public void delCoursewareSuccess(String delDataIds) {
+        if (!checkActivityExist()) {
+            return;
+        }
+
+        if (mListAdapter != null) {
+            String[] ids = delDataIds.split(",");
+            for (int i = 0; i < ids.length; i++) {
+                String id = ids[i];
+                for (int j = 0; j < mListAdapter.getData().size(); j++) {
+                    CoursewareListBean.RowsBean rowsBean = mListAdapter.getData().get(j);
+                    if (TextUtils.equals(id, String.valueOf(rowsBean.id))) {
+                        mListAdapter.getData().remove(rowsBean);
+                        break;
+                    }
+                }
+            }
+            mListAdapter.notifyDataSetChanged();
+        }
+    }
+
+
+    /**
+     * 检查是否还有下一页
+     *
+     * @param dataSize
+     */
+    private void checkHasNext(int dataSize) {
+        hasNext = dataSize >= Constants.DEFAULT_DATA_SIZE;
+    }
 }

binární
teacher/src/main/res/drawable-xhdpi/icon_courseware_failure.png


binární
teacher/src/main/res/drawable-xhdpi/icon_mine_courseware.png


binární
teacher/src/main/res/drawable-xxhdpi/icon_courseware_failure.png


binární
teacher/src/main/res/drawable-xxhdpi/icon_mine_courseware.png


+ 110 - 0
teacher/src/main/res/layout/activity_courseware_list_layout.xml

@@ -1,6 +1,116 @@
 <?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"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
+    <include
+        android:id="@+id/toolbar_include"
+        layout="@layout/common_toolbar_layout" />
+
+    <View
+        android:id="@+id/view_top_bg"
+        android:layout_width="match_parent"
+        android:layout_height="54dp"
+        android:background="@color/white"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/toolbar_include" />
+
+    <View
+        android:id="@+id/view_search_bg"
+        android:layout_width="match_parent"
+        android:layout_height="34dp"
+        android:layout_marginStart="14dp"
+        android:layout_marginEnd="14dp"
+        android:background="@drawable/shape_f8f8f8_18dp"
+        app:layout_constraintBottom_toBottomOf="@+id/view_top_bg"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/view_top_bg" />
+
+    <ImageView
+        android:id="@+id/iv_search_icon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="12dp"
+        android:src="@drawable/icon_search_grey"
+        app:layout_constraintBottom_toBottomOf="@+id/view_search_bg"
+        app:layout_constraintLeft_toLeftOf="@+id/view_search_bg"
+        app:layout_constraintTop_toTopOf="@+id/view_search_bg" />
+
+    <View
+        android:id="@+id/view_search_line"
+        android:layout_width="0.5dp"
+        android:layout_height="14dp"
+        android:layout_marginStart="8dp"
+        android:background="@color/color_d8d8d8"
+        app:layout_constraintBottom_toBottomOf="@+id/iv_search_icon"
+        app:layout_constraintLeft_toRightOf="@+id/iv_search_icon"
+        app:layout_constraintTop_toTopOf="@+id/iv_search_icon" />
+
+    <EditText
+        android:id="@+id/et_search_content"
+        android:layout_width="0dp"
+        android:layout_height="34dp"
+        android:layout_marginStart="8dp"
+        android:layout_marginEnd="8dp"
+        android:background="@null"
+        android:ellipsize="end"
+        android:hint="请输入课件名称"
+        android:maxLines="1"
+        android:textColorHint="@color/color_cccccc"
+        android:textSize="@dimen/sp_13"
+        app:layout_constraintBottom_toBottomOf="@+id/view_search_line"
+        app:layout_constraintLeft_toRightOf="@+id/view_search_line"
+        app:layout_constraintRight_toLeftOf="@+id/tv_search"
+        app:layout_constraintTop_toTopOf="@+id/view_search_line" />
+
+    <TextView
+        android:id="@+id/tv_search"
+        android:layout_width="48dp"
+        android:layout_height="24dp"
+        android:layout_marginEnd="6dp"
+        android:background="@drawable/shape_1ecdac_18dp"
+        android:gravity="center"
+        android:text="搜索"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_14"
+        app:layout_constraintBottom_toBottomOf="@+id/view_search_bg"
+        app:layout_constraintRight_toRightOf="@+id/view_search_bg"
+        app:layout_constraintTop_toTopOf="@+id/view_search_bg" />
+
+    <com.scwang.smart.refresh.layout.SmartRefreshLayout
+        android:id="@+id/refresh_layout"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/view_top_bg"
+        app:srlEnableLoadMore="false">
+
+        <androidx.recyclerview.widget.RecyclerView
+            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>
+
+
+    <TextView
+        android:id="@+id/tv_delete"
+        android:layout_width="0dp"
+        android:layout_height="44dp"
+        android:layout_marginStart="28dp"
+        android:layout_marginEnd="28dp"
+        android:layout_marginBottom="40dp"
+        android:background="@drawable/shape_2dc7aa_39dp"
+        android:gravity="center"
+        android:text="删除"
+        android:textColor="@color/white"
+        android:textSize="@dimen/sp_18"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent" />
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 20 - 4
teacher/src/main/res/layout/fragment_mine_layout.xml

@@ -749,21 +749,37 @@
             app:layout_constraintTop_toTopOf="@+id/tv_sparing_course_set" />
 
         <TextView
-            android:id="@+id/tv_award"
+            android:id="@+id/tv_mine_courseware"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:drawableTop="@drawable/icon_mine_award"
+            android:drawableTop="@drawable/icon_mine_courseware"
             android:drawablePadding="@dimen/dp_3"
             android:gravity="center"
             android:includeFontPadding="false"
             android:minWidth="48dp"
-            android:text="活动奖品"
+            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_sparing_course_set" />
 
+        <TextView
+            android:id="@+id/tv_award"
+            android:layout_width="wrap_content"
+            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:layout_marginTop="17dp"
+            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_sparing_course_set" />
 
         <View
             android:id="@+id/bottom_view_line"
@@ -771,7 +787,7 @@
             android:layout_height="1px"
             android:layout_marginTop="24dp"
             app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/tv_sparing_course_set" />
+            app:layout_constraintTop_toBottomOf="@+id/tv_award" />
 
         <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/cs_menu_usually"

+ 67 - 0
teacher/src/main/res/layout/item_courseware_list_layout.xml

@@ -0,0 +1,67 @@
+<?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="52dp"
+    android:layout_marginStart="14dp"
+    android:layout_marginTop="8dp"
+    android:layout_marginEnd="14dp"
+    android:background="@drawable/bg_white_10dp">
+
+    <com.cooleshow.base.widgets.QMUIRadiusImageView
+        android:id="@+id/iv_icon"
+        android:layout_width="36dp"
+        android:layout_height="36dp"
+        android:layout_marginStart="8dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+
+    <TextView
+        android:layout_marginEnd="10dp"
+        app:layout_constraintRight_toLeftOf="@+id/iv_check"
+        android:id="@+id/tv_name"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:ellipsize="end"
+        android:includeFontPadding="false"
+        android:maxLines="1"
+        android:paddingStart="10dp"
+        android:textColor="@color/color_333333"
+        android:textSize="@dimen/sp_16"
+        app:layout_constraintBottom_toBottomOf="@+id/iv_icon"
+        app:layout_constraintLeft_toRightOf="@+id/iv_icon"
+        app:layout_constraintTop_toTopOf="@+id/iv_icon"
+        tools:text="Letting Go.MP3" />
+
+    <TextView
+        android:id="@+id/tv_failure"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="12dp"
+        android:drawableLeft="@drawable/icon_courseware_failure"
+        android:drawablePadding="5dp"
+        android:text="已失效"
+        android:textColor="@color/color_ff802c"
+        android:textSize="@dimen/sp_13"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintRight_toLeftOf="@+id/iv_check"
+        app:layout_constraintTop_toTopOf="parent" />
+
+
+    <ImageView
+        android:id="@+id/iv_check"
+        android:layout_width="18dp"
+        android:layout_height="18dp"
+        android:layout_marginEnd="14dp"
+        android:src="@drawable/icon_check_select_default"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:src="@drawable/icon_check_select" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>