Prechádzať zdrojové kódy

[카테고리][New] 필터 적용 후 정렬 변경하면 필터링 리스트 리로드 후 컨텐츠 로딩

hyodong.min 6 rokov pred
rodič
commit
571fcae742

+ 51 - 25
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/category/CategoryFilterModel.java

@@ -87,6 +87,25 @@ public abstract class CategoryFilterModel extends CategoryMainModel {
   protected void modifyContents(List<CategoryContentsBean> contentsBeans) {
   }
 
+  @Override
+  public void loadContents(String categoryNumber) {
+    if (isFilterApplied) {
+      // 필터링 됐을 경우 처리
+      // 정렬 순서 반영하여 필터링 리스트 로드
+      loadFilteringContents(waiterCaller, event -> {
+        if (event.getEventId() == Event.SUCCESS) {
+          loadContentsWithFilter();
+        }
+        else if (event.getEventId() == Event.ERROR) {
+          onResult(new Event.Builder(Event.ERROR).string(event.getString()).build());
+        }
+      });
+    }
+    else {
+      super.loadContents(categoryNumber);
+    }
+  }
+
   public final List<FilterSectionBean> getFilterList() {
     return filterSectionBeans;
   }
@@ -445,39 +464,46 @@ public abstract class CategoryFilterModel extends CategoryMainModel {
       filterDetailObjectBeanCommitted = filterDetailObjectBean;
       isFilterApplied = true;
 
-      Log.e("APP#  CategoryFilterModel | commitFilter", "|" + " ::: " + filterDetailObjectBeanCommitted.toJson());
-      CategoryFilterContentsRequestBean requestBean = new CategoryFilterContentsRequestBean(getCategoryNo());
-      List<ItemNoBean> list = new ArrayList<>();
+      loadContentsWithFilter();
+    }
+  }
 
-      CategoryFilterDetailObjectBean detailObjectBean = filterDetailObjectBeanCommitted;
+  private void loadContentsWithFilter() {
+    CategoryFilterContentsRequestBean requestBean = new CategoryFilterContentsRequestBean(getCategoryNo());
+    List<ItemNoBean> list = new ArrayList<>();
 
-      if (null != detailObjectBean.getBasicList()) {
-        addItemToList(detailObjectBean.getBasicList(), list);
-      }
-      if (null != detailObjectBean.getAreaList()) {
-        addItemToList(detailObjectBean.getAreaList(), list);
-      }
-      if (null != detailObjectBean.getHotPlaceList()) {
-        addItemToList(detailObjectBean.getHotPlaceList(), list);
-      }
+    CategoryFilterDetailObjectBean detailObjectBean = filterDetailObjectBeanCommitted;
 
-      requestBean.setItemNoBeans(list);
+    // 필터링 된 컨텐츠 리스트를 만들어서 넘겨줌
+    if (null != detailObjectBean.getBasicList()) {
+      addItemToList(detailObjectBean.getBasicList(), list);
+    }
+    if (null != detailObjectBean.getAreaList()) {
+      addItemToList(detailObjectBean.getAreaList(), list);
+    }
+    if (null != detailObjectBean.getHotPlaceList()) {
+      addItemToList(detailObjectBean.getHotPlaceList(), list);
+    }
 
-      disposableContents = new APICategoryFilterContentsModule().call(requestBean, new APIModuleListener<CategoryContentsResultBean>(waiterCaller) {
-        @Override
-        public void onApiSuccess(CategoryContentsResultBean resultBean) {
-          filteringContentsBeans = resultBean.getData();
+    requestBean.setItemNoBeans(list);
 
-          onResult(new Event.Builder(Event.SUCCESS).integer(Event.FILTER_COMMIT).build());
+    disposableContents = new APICategoryFilterContentsModule().call(requestBean, new APIModuleListener<CategoryContentsResultBean>(waiterCaller) {
+      @Override
+      public void onApiSuccess(CategoryContentsResultBean resultBean) {
+        filteringContentsBeans = resultBean.getData();
+        if (null == filteringContentsBeans) {
+          filteringContentsBeans = new ArrayList<>();
         }
 
-        @Override
-        public void onApiError(String errorMessage, APIError error) {
-          onResult(new Event.Builder(Event.ERROR).integer(Event.FILTER_COMMIT).string(errorMessage).build());
-        }
-      });
+        onResult(new Event.Builder(Event.SUCCESS).integer(Event.FILTER_COMMIT).build());
+      }
 
-    }
+      @Override
+      public void onApiError(String errorMessage, APIError error) {
+        filteringContentsBeans = new ArrayList<>();
+        onResult(new Event.Builder(Event.ERROR).integer(Event.FILTER_COMMIT).string(errorMessage).build());
+      }
+    });
   }
 
   /**