Jelajahi Sumber

Refactor: Refactor CourseRepository. Remove ugly call. The repository creates LiveData, and give it to ViewModel.

kenny67nju 5 tahun lalu
induk
melakukan
61b175129d

+ 9 - 6
app/src/main/java/cn/seecoder/courselearningdemo/repository/CourseRepository.java

@@ -23,7 +23,9 @@ import retrofit2.http.Query;
 
 public class CourseRepository {
     private CourseDao courseDao = RetrofitClient.courseDao;
+    private final MutableLiveData<LoadState> stateData = new MutableLiveData<>();
     private final MutableLiveData<Course> courseData = new MutableLiveData<>();
+    private final MutableLiveData<List<Course>> courseListData = new MutableLiveData<>();
     private static CourseRepository uniqueInstance = null;
     private Integer currentPage = 1;
 
@@ -41,7 +43,12 @@ public class CourseRepository {
     public Integer getCurrentPage(){
         return currentPage;
     }
-
+    public MutableLiveData<List<Course>> getCourseListLiveData(){
+        return courseListData;
+    }
+    public MutableLiveData<LoadState> getStateDataLiveData(){
+        return stateData;
+    }
 
     public MutableLiveData<Course> getCourseData(Integer courseId){
         String uid = null;
@@ -69,7 +76,7 @@ public class CourseRepository {
         return courseData;
 
     }
-    public void getCourseListData(Integer currentPageNum, String uid,String queryKey,MutableLiveData<List<Course>> courseListData,MutableLiveData<LoadState> stateData){
+    public void getCourseListData(Integer currentPageNum, String uid,String queryKey){
         stateData.setValue(LoadState.LOADING);
         Call<PageInfo<Course>> courseCall =  courseDao.getAllCourses(currentPageNum, uid, queryKey);
         // 异步调用
@@ -98,11 +105,7 @@ public class CourseRepository {
                 currentPage--;
             }
         });
-
-
     }
 
 
-
-
 }

+ 4 - 2
app/src/main/java/cn/seecoder/courselearningdemo/viewmodel/HomeViewModel.java

@@ -34,6 +34,8 @@ public class HomeViewModel extends ViewModel {
     private CourseRepository courseRepository= CourseRepository.getCourseRepository();
 
     public HomeViewModel(){
+        courseListData = courseRepository.getCourseListLiveData();
+        stateData = courseRepository.getStateDataLiveData();
 
     }
 
@@ -79,7 +81,7 @@ public class HomeViewModel extends ViewModel {
 
     private void loadData(){
         stateData.setValue(LoadState.LOADING);
-        courseRepository.getCourseListData(currentPage,uid,queryKey,courseListData,stateData);
+        courseRepository.getCourseListData(currentPage,uid,queryKey);
         currentPage =courseRepository.getCurrentPage();
     }
 
@@ -94,7 +96,7 @@ public class HomeViewModel extends ViewModel {
         order.setStatus(Constant.ORDER_STATUS_UNPAID);
         // 调用后端生成订单的接口
         courseOrderFlag=courseOrderRepository.createCourseOrder(order);
-        if(courseOrderRepository.getSuccessCreatedFlag()==true)
+        if(courseOrderRepository.getSuccessCreatedFlag())
             sendCourseOrderSuccessNotify(course.getId());
     }