Sfoglia il codice sorgente

Fix: HomeViewModel can always load more course list.

tubinyan 5 anni fa
parent
commit
afc1e5238c

+ 6 - 0
app/src/main/java/cn/seecoder/courselearningdemo/model/PageInfo.java

@@ -3,11 +3,17 @@ package cn.seecoder.courselearningdemo.model;
 import java.util.List;
 
 public class PageInfo<T> {
+    // 当前页码
     private int pageNum;
+    // 每页包含的最大记录数
     private int pageSize;
+    // 当前页包含的记录数
     private int size;
+    // 总记录数
     private long total;
+    // 总页数
     private int pages;
+    // 结果集
     private List<T> list;
 
     public int getPageNum() {

+ 3 - 4
app/src/main/java/cn/seecoder/courselearningdemo/repository/CourseRepository.java

@@ -88,11 +88,11 @@ public class CourseRepository {
                 LogUtil.i(courseCall, "Get response");
                 if (response.body() == null){
                     stateData.setValue(LoadState.ERROR);
-                    currentPage--;
-                } else if (response.body().getSize() == 0 || currentPage > response.body().getPages() ){
+                } else if (response.body().getSize() == 0 || currentPageNum > response.body().getPages() ){
+                    currentPage = response.body().getPageNum();
                     stateData.setValue(LoadState.EMPTY);
-                    currentPage--;
                 } else {
+                    currentPage = response.body().getPageNum();
                     stateData.setValue(LoadState.SUCCESS);
                     List<Course> temp = (courseListData.getValue() != null) ? courseListData.getValue() : new ArrayList<>();
                     temp.addAll(response.body().getList());
@@ -104,7 +104,6 @@ public class CourseRepository {
             public void onFailure(Call<PageInfo<Course>> call, Throwable t) {
                 LogUtil.e(courseCall, "loadCourseListPageInfo failure: "+ t.getMessage() + "  caused by: "+t.getCause());
                 stateData.setValue(LoadState.ERROR);
-                currentPage--;
             }
         });
     }

+ 3 - 10
app/src/main/java/cn/seecoder/courselearningdemo/viewmodel/HomeViewModel.java

@@ -9,7 +9,6 @@ import java.util.List;
 
 import cn.seecoder.courselearningdemo.model.CourseOrder;
 
-
 import cn.seecoder.courselearningdemo.repository.CourseOrderRepository;
 import cn.seecoder.courselearningdemo.repository.CourseRepository;
 import cn.seecoder.courselearningdemo.utils.Constant;
@@ -23,14 +22,13 @@ public class HomeViewModel extends ViewModel {
     private MutableLiveData<LoadState> stateData;
     private MutableLiveData<List<Course>> courseListData;
     private MutableLiveData<Boolean> courseOrderFlag;
-    private CourseOrderRepository courseOrderRepository= CourseOrderRepository.getCourseRepository();
-    private CourseRepository courseRepository= CourseRepository.getCourseRepository();
+    private CourseOrderRepository courseOrderRepository = CourseOrderRepository.getCourseRepository();
+    private CourseRepository courseRepository = CourseRepository.getCourseRepository();
 
     public HomeViewModel(){
         courseListData = courseRepository.getCourseListLiveData();
         stateData = courseRepository.getStateDataLiveData();
         courseOrderFlag = courseOrderRepository.getCourseOrderFlagLiveData();
-
     }
 
     public void setUid(String uid) {
@@ -51,11 +49,6 @@ public class HomeViewModel extends ViewModel {
     }
 
     public LiveData<List<Course>> getData() {
-        if (courseListData == null) {
-            courseListData = new MutableLiveData<>();
-            stateData = new MutableLiveData<>();
-            loadData();
-        }
         return courseListData;
     }
 
@@ -63,6 +56,7 @@ public class HomeViewModel extends ViewModel {
         return courseOrderFlag;
     }
     public void getNextPageData(){
+        currentPage = courseRepository.getCurrentPage();
         currentPage ++;
         loadData();
     }
@@ -76,7 +70,6 @@ public class HomeViewModel extends ViewModel {
     private void loadData(){
         stateData.setValue(LoadState.LOADING);
         courseRepository.loadCourseListData(currentPage,uid,queryKey);
-        currentPage =courseRepository.getCurrentPage();
     }
 
     public void createCourseOrder(Course course){