|
@@ -1,28 +1,109 @@
|
|
|
package com.cooleshow.teacher.ui.homepage;
|
|
|
|
|
|
+import android.view.LayoutInflater;
|
|
|
import android.view.View;
|
|
|
+import android.widget.TextView;
|
|
|
+
|
|
|
+import androidx.annotation.NonNull;
|
|
|
+import androidx.recyclerview.widget.GridLayoutManager;
|
|
|
+import androidx.recyclerview.widget.LinearLayoutManager;
|
|
|
+import androidx.recyclerview.widget.RecyclerView;
|
|
|
|
|
|
import com.alibaba.android.arouter.launcher.ARouter;
|
|
|
+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.common.WebConstants;
|
|
|
+import com.cooleshow.base.constanst.Constants;
|
|
|
import com.cooleshow.base.router.RouterPath;
|
|
|
+import com.cooleshow.base.widgets.EmptyViewLayout;
|
|
|
import com.cooleshow.teacher.R;
|
|
|
+import com.cooleshow.teacher.adapter.MineVideoCourseAdapter;
|
|
|
+import com.cooleshow.teacher.bean.MineVideoCourseListBean;
|
|
|
+import com.cooleshow.teacher.bean.VideoCourseListBean;
|
|
|
+import com.cooleshow.teacher.contract.LiveCoursePageContract;
|
|
|
+import com.cooleshow.teacher.contract.VideoCoursePageContract;
|
|
|
+import com.cooleshow.teacher.presenter.homePage.VideoCoursePagePresenter;
|
|
|
import com.cooleshow.usercenter.ui.activity.BaseMVPFragment;
|
|
|
import com.cooleshow.teacher.databinding.FragmentVideoCoursePageLayoutBinding;
|
|
|
import com.cooleshow.teacher.presenter.homePage.MineStylePresenter;
|
|
|
+import com.scwang.smart.refresh.layout.api.RefreshLayout;
|
|
|
+import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
|
|
|
/**
|
|
|
* Author by pq, Date on 2022/5/9.
|
|
|
*/
|
|
|
-public class VideoCoursePageFragment extends BaseMVPFragment<FragmentVideoCoursePageLayoutBinding, MineStylePresenter> implements View.OnClickListener {
|
|
|
+public class VideoCoursePageFragment extends BaseMVPFragment<FragmentVideoCoursePageLayoutBinding, VideoCoursePagePresenter> implements VideoCoursePageContract.VideoCoursePageView, View.OnClickListener {
|
|
|
+ private MineVideoCourseAdapter mineVideoCourseAdapter;
|
|
|
+ List<VideoCourseListBean.RowsBean> dataList = new ArrayList<>();
|
|
|
|
|
|
@Override
|
|
|
protected void initView(View rootView) {
|
|
|
mViewBinding.llCreateVideo.setOnClickListener(this);
|
|
|
+ RecyclerView rvAddress = mViewBinding.recyclerView;
|
|
|
+ LinearLayoutManager manager = new GridLayoutManager(getContext(), 2);
|
|
|
+ rvAddress.setLayoutManager(manager);
|
|
|
+ mineVideoCourseAdapter = new MineVideoCourseAdapter(dataList);
|
|
|
+ EmptyViewLayout mEmptyView = new EmptyViewLayout(getContext());
|
|
|
+ mEmptyView.setContent(com.cooleshow.base.R.drawable.icon_empty_course, "暂无课程~");
|
|
|
+ mineVideoCourseAdapter.setEmptyView(mEmptyView);
|
|
|
+ rvAddress.setAdapter(mineVideoCourseAdapter);
|
|
|
+ mineVideoCourseAdapter.setOnItemClickListener(new OnItemClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
|
|
|
+ MineVideoCourseListBean.RowsBean item = (MineVideoCourseListBean.RowsBean) adapter.getItem(position);
|
|
|
+ ARouter.getInstance()
|
|
|
+ .build(RouterPath.WebCenter.ACTIVITY_HTML)
|
|
|
+ .withString(WebConstants.WEB_URL, WebConstants.TEACHER_VIDEO_DETAIL + "?groupId=" + item.videoLessonGroupId)
|
|
|
+ .navigation();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+ private int currentPage;
|
|
|
+
|
|
|
@Override
|
|
|
protected void initData() {
|
|
|
+ mViewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
|
|
|
+ @Override
|
|
|
+ public void onRefresh(@NonNull RefreshLayout refreshLayout) {
|
|
|
+ currentPage = 1;
|
|
|
+ queryCourse(true);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ mineVideoCourseAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
|
|
|
+ @Override
|
|
|
+ public void onLoadMore() {
|
|
|
+ //上拉加载
|
|
|
+ if (hasNext) {
|
|
|
+ currentPage++;
|
|
|
+ queryCourse(false);
|
|
|
+ } else {
|
|
|
+ mineVideoCourseAdapter.getLoadMoreModule().loadMoreEnd();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ currentPage = 1;
|
|
|
+ queryCourse(true);
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean hasNext = true;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 检查是否还有下一页
|
|
|
+ *
|
|
|
+ * @param dataSize
|
|
|
+ */
|
|
|
+ private void checkHasNext(int dataSize) {
|
|
|
+ hasNext = dataSize >= Constants.DEFAULT_DATA_SIZE;
|
|
|
+ }
|
|
|
|
|
|
+ private void queryCourse(boolean isLoading) {
|
|
|
+ presenter.queryVideoCourseGroup(isLoading, currentPage);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -31,13 +112,13 @@ public class VideoCoursePageFragment extends BaseMVPFragment<FragmentVideoCourse
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- protected MineStylePresenter createPresenter() {
|
|
|
- return new MineStylePresenter();
|
|
|
+ protected VideoCoursePagePresenter createPresenter() {
|
|
|
+ return new VideoCoursePagePresenter();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void onClick(View view) {
|
|
|
- switch (view.getId()){
|
|
|
+ switch (view.getId()) {
|
|
|
case R.id.ll_create_video:
|
|
|
ARouter.getInstance()
|
|
|
.build(RouterPath.WebCenter.ACTIVITY_HTML)
|
|
@@ -46,4 +127,45 @@ public class VideoCoursePageFragment extends BaseMVPFragment<FragmentVideoCourse
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void queryVideoCourseGroupSuccess(int page, VideoCourseListBean data) {
|
|
|
+ if (isDetached()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (data != null) {
|
|
|
+ if (page == 1) {
|
|
|
+ dataList.clear();
|
|
|
+ mViewBinding.refreshLayout.finishRefresh();
|
|
|
+ if (data.rows != null && data.rows.size() > 0) {
|
|
|
+ checkHasNext(data.rows.size());
|
|
|
+ dataList.addAll(data.rows);
|
|
|
+ mineVideoCourseAdapter.notifyDataSetChanged();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (data.rows != null && data.rows.size() > 0) {
|
|
|
+ mineVideoCourseAdapter.getLoadMoreModule().loadMoreComplete();
|
|
|
+ checkHasNext(data.rows.size());
|
|
|
+ } else {
|
|
|
+ mineVideoCourseAdapter.getLoadMoreModule().loadMoreEnd();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void queryVideoCourseGroupError(int page) {
|
|
|
+ if (isDetached()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (page == 1) {
|
|
|
+ mViewBinding.refreshLayout.finishRefresh();
|
|
|
+ } else {
|
|
|
+ if (mineVideoCourseAdapter != null) {
|
|
|
+ currentPage--;
|
|
|
+ mineVideoCourseAdapter.getLoadMoreModule().loadMoreFail();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|