Browse Source

优化消息盒子页面加载更多交互

Pq 6 months ago
parent
commit
f5da3e94a7

+ 3 - 0
institution/src/main/java/com/cooleshow/institution/stu/ui/message/MessageBoxActivity.java

@@ -192,6 +192,9 @@ public class MessageBoxActivity extends BaseMVPActivity<JgActivityMessageBoxBind
     }
 
     private void queryList(boolean isLoading) {
+        if (currentPage == 1) {
+            viewBinding.refreshLayout.resetNoMoreData();
+        }
         presenter.sysMessageList(isLoading, currentPage, messageCountForPage,group);
     }
 

+ 7 - 7
student/src/main/java/com/cooleshow/student/adapter/MessageBoxAdapter.java

@@ -24,7 +24,7 @@ import java.util.List;
  * @author Ryan
  * 类说明:
  */
-public class MessageBoxAdapter extends BaseQuickAdapter<SystemMessageBean.RowsBean, BaseViewHolder> implements LoadMoreModule {
+public class MessageBoxAdapter extends BaseQuickAdapter<SystemMessageBean.RowsBean, BaseViewHolder>  {
 
     public MessageBoxAdapter() {
         super(R.layout.layout_message_nox_item);
@@ -118,10 +118,10 @@ public class MessageBoxAdapter extends BaseQuickAdapter<SystemMessageBean.RowsBe
                 break;
         }
     }
-
-    @NonNull
-    @Override
-    public BaseLoadMoreModule addLoadMoreModule(@NonNull BaseQuickAdapter<?, ?> baseQuickAdapter) {
-        return new BaseLoadMoreModule(baseQuickAdapter);
-    }
+//
+//    @NonNull
+//    @Override
+//    public BaseLoadMoreModule addLoadMoreModule(@NonNull BaseQuickAdapter<?, ?> baseQuickAdapter) {
+//        return new BaseLoadMoreModule(baseQuickAdapter);
+//    }
 }

+ 8 - 0
student/src/main/java/com/cooleshow/student/bean/SystemMessageBean.java

@@ -18,6 +18,14 @@ public class SystemMessageBean {
     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 {
         /*
         	"clientId": "",

+ 37 - 21
student/src/main/java/com/cooleshow/student/ui/message/MessageBoxActivity.java

@@ -24,6 +24,7 @@ import com.cooleshow.base.ui.activity.BaseMVPActivity;
 
 import com.cooleshow.base.utils.GsonUtils;
 import com.cooleshow.base.utils.JumpUtils;
+import com.cooleshow.base.utils.LOG;
 import com.cooleshow.base.utils.SizeUtils;
 import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.student.R;
@@ -33,6 +34,7 @@ import com.cooleshow.student.bean.SystemMessageBean;
 import com.cooleshow.student.contract.MessageBoxContract;
 import com.cooleshow.student.databinding.ActivityMessageBoxBinding;
 import com.cooleshow.student.presenter.message.MessageBoxPresenter;
+import com.scwang.smart.refresh.footer.ClassicsFooter;
 import com.scwang.smart.refresh.layout.api.RefreshLayout;
 import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
 
@@ -50,6 +52,8 @@ import java.util.List;
 public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBinding, MessageBoxPresenter> implements MessageBoxContract.MessageBoxView, View.OnClickListener {
     //SYSTEM:系统消息 COURSE:课程信息 NOTICE:公告
     private String group = "";
+    private MessageBoxAdapter messageBoxAdapter;
+    private boolean hasNext = true;
 
     @Override
     public void onClick(View view) {
@@ -98,11 +102,10 @@ public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBindin
         QMUIStatusBarHelper.setStatusBarLightMode(this);
     }
 
-    private MessageBoxAdapter messageBoxAdapter;
-
     @Override
     protected void initView() {
         initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "消息盒子");
+        viewBinding.refreshLayout.setRefreshFooter(new ClassicsFooter(this));
         viewBinding.clAll.setOnClickListener(this);
         viewBinding.clCourse.setOnClickListener(this);
         viewBinding.clSystem.setOnClickListener(this);
@@ -173,15 +176,16 @@ public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBindin
                 queryList(true);
             }
         });
-        messageBoxAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
+
+        viewBinding.refreshLayout.setOnLoadMoreListener(new com.scwang.smart.refresh.layout.listener.OnLoadMoreListener() {
             @Override
-            public void onLoadMore() {
+            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
                 //上拉加载
                 if (hasNext) {
                     currentPage++;
                     queryList(false);
                 } else {
-                    messageBoxAdapter.getLoadMoreModule().loadMoreEnd();
+                    viewBinding.refreshLayout.finishLoadMoreWithNoMoreData();
                 }
             }
         });
@@ -190,31 +194,37 @@ public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBindin
     }
 
     @Override
-    public void sysMessageListSuccess(int page, SystemMessageBean data) {
-        if (data != null) {
+    public void sysMessageListSuccess(int page, SystemMessageBean dataList) {
+        if (!checkActivityExist()) {
+            return;
+        }
+        if (dataList != null) {
             if (page == 1) {
-                messageBoxAdapter.getData().clear();
-                messageBoxAdapter.notifyDataSetChanged();
+                //第一页
                 viewBinding.refreshLayout.finishRefresh();
-                if (data.rows != null && data.rows.size() > 0) {
-                    checkHasNext(data.rows.size());
-                    messageBoxAdapter.setNewInstance(data.rows);
-                } else {
+                if (messageBoxAdapter != null) {
+                    messageBoxAdapter.getData().clear();
                     messageBoxAdapter.notifyDataSetChanged();
+                    if (dataList.getRows() != null && dataList.getRows().size() > 0) {
+                        checkHasNext(dataList.getRows().size());
+                        messageBoxAdapter.setNewInstance(dataList.getRows());
+                    }
                 }
             } else {
-                if (data.rows != null && data.rows.size() > 0) {
-                    messageBoxAdapter.addData(data.rows);
-                    messageBoxAdapter.getLoadMoreModule().loadMoreComplete();
-                    checkHasNext(data.rows.size());
-                } else {
-                    messageBoxAdapter.getLoadMoreModule().loadMoreEnd();
+                //加载更多
+                if (messageBoxAdapter != null) {
+                    if (dataList.getRows() != null && dataList.getRows().size() > 0) {
+                        viewBinding.refreshLayout.finishLoadMore();
+                        checkHasNext(dataList.getRows().size());
+                        messageBoxAdapter.addData(dataList.getRows());
+                    } else {
+                        viewBinding.refreshLayout.finishLoadMoreWithNoMoreData();
+                    }
                 }
             }
         }
     }
 
-    private boolean hasNext = true;
 
     /**
      * 检查是否还有下一页
@@ -226,18 +236,24 @@ public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBindin
     }
 
     private void queryList(boolean isLoading) {
+        if (currentPage == 1) {
+            viewBinding.refreshLayout.resetNoMoreData();
+        }
         presenter.sysMessageList(isLoading, currentPage, group);
     }
 
 
     @Override
     public void sysMessageListError(int page) {
+        if (!checkActivityExist()) {
+            return;
+        }
         if (page == 1) {
             viewBinding.refreshLayout.finishRefresh();
         } else {
             if (messageBoxAdapter != null) {
                 currentPage--;
-                messageBoxAdapter.getLoadMoreModule().loadMoreFail();
+                viewBinding.refreshLayout.finishLoadMore(false);
             }
         }
     }

+ 1 - 0
student/src/main/res/layout/activity_message_box.xml

@@ -185,6 +185,7 @@
 
         <com.scwang.smart.refresh.layout.SmartRefreshLayout
             android:id="@+id/refreshLayout"
+            app:srlEnableLoadMore="true"
             android:layout_width="match_parent"
             android:layout_height="match_parent">
 

+ 1 - 7
teacher/src/main/java/com/cooleshow/teacher/adapter/MessageBoxAdapter.java

@@ -24,7 +24,7 @@ import java.util.List;
  * @author Ryan
  * 类说明:
  */
-public class MessageBoxAdapter extends BaseQuickAdapter<SystemMessageBean.RowsBean, BaseViewHolder> implements LoadMoreModule {
+public class MessageBoxAdapter extends BaseQuickAdapter<SystemMessageBean.RowsBean, BaseViewHolder>  {
 
     public MessageBoxAdapter() {
         super(R.layout.layout_message_nox_item);
@@ -49,12 +49,6 @@ public class MessageBoxAdapter extends BaseQuickAdapter<SystemMessageBean.RowsBe
         loadIcon(im_type, item.img, item.subType);
     }
 
-    @NonNull
-    @Override
-    public BaseLoadMoreModule addLoadMoreModule(@NonNull BaseQuickAdapter<?, ?> baseQuickAdapter) {
-        return new BaseLoadMoreModule(baseQuickAdapter);
-    }
-
     private void loadIcon(ImageView im_type, String img, String subType) {
         if (!TextUtils.isEmpty(img)) {
             GlideUtils.INSTANCE.loadImage(getContext(), img, im_type, R.drawable.icon_message_other);

+ 8 - 0
teacher/src/main/java/com/cooleshow/teacher/bean/SystemMessageBean.java

@@ -18,6 +18,14 @@ public class SystemMessageBean {
     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 {
         /*
         	"clientId": "",

+ 35 - 20
teacher/src/main/java/com/cooleshow/teacher/ui/message/MessageBoxActivity.java

@@ -33,6 +33,7 @@ import com.cooleshow.teacher.contract.MessageBoxContract;
 import com.cooleshow.teacher.databinding.ActivityMessageBoxBinding;
 import com.cooleshow.teacher.presenter.message.MessageBoxPresenter;
 import com.google.gson.Gson;
+import com.scwang.smart.refresh.footer.ClassicsFooter;
 import com.scwang.smart.refresh.layout.api.RefreshLayout;
 import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
 
@@ -52,6 +53,8 @@ import java.util.List;
 public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBinding, MessageBoxPresenter> implements MessageBoxContract.MessageBoxView, View.OnClickListener {
     //SYSTEM:系统消息 COURSE:课程信息 NOTICE:公告
     private String group = "";
+    private MessageBoxAdapter messageBoxAdapter;
+    private boolean hasNext = true;
 
     @Override
     public void onClick(View view) {
@@ -105,11 +108,11 @@ public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBindin
         QMUIStatusBarHelper.setStatusBarLightMode(this);
     }
 
-    private MessageBoxAdapter messageBoxAdapter;
 
     @Override
     protected void initView() {
         initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "消息盒子");
+        viewBinding.refreshLayout.setRefreshFooter(new ClassicsFooter(this));
         viewBinding.clAll.setOnClickListener(this);
         viewBinding.clCourse.setOnClickListener(this);
         viewBinding.clSystem.setOnClickListener(this);
@@ -180,15 +183,15 @@ public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBindin
                 queryList(true);
             }
         });
-        messageBoxAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
+        viewBinding.refreshLayout.setOnLoadMoreListener(new com.scwang.smart.refresh.layout.listener.OnLoadMoreListener() {
             @Override
-            public void onLoadMore() {
+            public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
                 //上拉加载
                 if (hasNext) {
                     currentPage++;
                     queryList(false);
                 } else {
-                    messageBoxAdapter.getLoadMoreModule().loadMoreEnd();
+                    viewBinding.refreshLayout.finishLoadMoreWithNoMoreData();
                 }
             }
         });
@@ -197,31 +200,37 @@ public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBindin
     }
 
     @Override
-    public void sysMessageListSuccess(int page, SystemMessageBean data) {
-        if (data != null) {
+    public void sysMessageListSuccess(int page, SystemMessageBean dataList) {
+        if (!checkActivityExist()) {
+            return;
+        }
+        if (dataList != null) {
             if (page == 1) {
+                //第一页
                 viewBinding.refreshLayout.finishRefresh();
-                messageBoxAdapter.getData().clear();
-                messageBoxAdapter.notifyDataSetChanged();
-                if (data.rows != null && data.rows.size() > 0) {
-                    checkHasNext(data.rows.size());
-                    messageBoxAdapter.setNewInstance(data.rows);
-                } else {
+                if (messageBoxAdapter != null) {
+                    messageBoxAdapter.getData().clear();
                     messageBoxAdapter.notifyDataSetChanged();
+                    if (dataList.getRows() != null && dataList.getRows().size() > 0) {
+                        checkHasNext(dataList.getRows().size());
+                        messageBoxAdapter.setNewInstance(dataList.getRows());
+                    }
                 }
             } else {
-                if (data.rows != null && data.rows.size() > 0) {
-                    messageBoxAdapter.addData(data.rows);
-                    messageBoxAdapter.getLoadMoreModule().loadMoreComplete();
-                    checkHasNext(data.rows.size());
-                } else {
-                    messageBoxAdapter.getLoadMoreModule().loadMoreEnd();
+                //加载更多
+                if (messageBoxAdapter != null) {
+                    if (dataList.getRows() != null && dataList.getRows().size() > 0) {
+                        viewBinding.refreshLayout.finishLoadMore();
+                        checkHasNext(dataList.getRows().size());
+                        messageBoxAdapter.addData(dataList.getRows());
+                    } else {
+                        viewBinding.refreshLayout.finishLoadMoreWithNoMoreData();
+                    }
                 }
             }
         }
     }
 
-    private boolean hasNext = true;
 
     /**
      * 检查是否还有下一页
@@ -233,18 +242,24 @@ public class MessageBoxActivity extends BaseMVPActivity<ActivityMessageBoxBindin
     }
 
     private void queryList(boolean isLoading) {
+        if (currentPage == 1) {
+            viewBinding.refreshLayout.resetNoMoreData();
+        }
         presenter.sysMessageList(isLoading, currentPage, group);
     }
 
 
     @Override
     public void sysMessageListError(int page) {
+        if (!checkActivityExist()) {
+            return;
+        }
         if (page == 1) {
             viewBinding.refreshLayout.finishRefresh();
         } else {
             if (messageBoxAdapter != null) {
                 currentPage--;
-                messageBoxAdapter.getLoadMoreModule().loadMoreFail();
+                viewBinding.refreshLayout.finishLoadMore(false);
             }
         }
     }

+ 1 - 0
teacher/src/main/res/layout/activity_message_box.xml

@@ -185,6 +185,7 @@
 
         <com.scwang.smart.refresh.layout.SmartRefreshLayout
             android:id="@+id/refreshLayout"
+            app:srlEnableLoadMore="true"
             android:layout_width="match_parent"
             android:layout_height="match_parent">