Kaynağa Gözat

[카테고리][New] 필터 새 API 적용
- 검색 필터 API 와 유사 형식

hyodong.min 6 yıl önce
ebeveyn
işleme
0607af354a

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

@@ -146,6 +146,7 @@ public abstract class CategoryFilterModel extends CategoryMainModel {
   private boolean isFilterApplied = false;
   private int listCount = 0;
   private CategoryFilterContentsResultBean filterSearchResultBean;
+  private CategoryFilterContentsResultBean filterSearchResultBeanOnlyProperty;  // 지역/핫플 상세 필터를 요구할 때 이전 검색 결과를 제줄해야한다. 이는 지역/핫플이 적용되지 않은 필터 데이터를 갖고 있다.
   private List<CategoryContentsBean> committedFilteringContents;
 
   /**
@@ -219,7 +220,8 @@ public abstract class CategoryFilterModel extends CategoryMainModel {
       isFilterApplied = false;
       filterSearchResultBean = null;
       listCount = 0;
-      listener.onEvent(new Event.Builder(Event.SUCCESS).integer(0).build());
+      listener.onEvent(new Event.Builder(Event.SUCCESS).integer(listCount).build());
+      Log.d("APP# CategoryFilterModel | loadFilteringContents", "|" + "적용된 필터 없음.");
       return;
     }
 
@@ -230,6 +232,10 @@ public abstract class CategoryFilterModel extends CategoryMainModel {
         if (null != filterSearchResultBean) {
           isFilterApplied = true;
           listCount = filterSearchResultBean.getListCount();
+          if (StringUtil.isEmpty(requestBean.getFilterArea()) && StringUtil.isEmpty(requestBean.getFilterPlace())) {
+            // 지역/핫플 필터가 없는 데이터는 별도 보관한다. 상세 필터를 요구할 때 이용
+            filterSearchResultBeanOnlyProperty = filterSearchResultBean;
+          }
 
           listener.onEvent(new Event.Builder(Event.SUCCESS).integer(listCount).build());
         }
@@ -307,13 +313,15 @@ public abstract class CategoryFilterModel extends CategoryMainModel {
     // 필터링 처리한 임시 데이터
     List<CategoryContentsBean> targetList = null;
 
-    // 필터링 한 데이터가 있다면 그것을 이용
-    if (null != filterSearchResultBean) {
+
+    // 지역 필터 적용 이전의 데이터를 저장해두고 넘겨줘야 한다.
+    if (null != filterSearchResultBeanOnlyProperty) {
       // 일치하는 결과가 있음.
-      if (null != filterSearchResultBean.getData() && filterSearchResultBean.getData().size() > 0) {
-        targetList = filterSearchResultBean.getData();
+      if (null != filterSearchResultBeanOnlyProperty.getData() && filterSearchResultBeanOnlyProperty.getData().size() > 0) {
+        targetList = filterSearchResultBeanOnlyProperty.getData();
       }
     }
+
     /*
       디테일 정보를 요청할 경우 각 태그별로 컨텐츠 수를 표시하기 위해서 기 검색된 컨텐츠의 no 들을 함께 넘겨준다.
      */
@@ -465,6 +473,7 @@ public abstract class CategoryFilterModel extends CategoryMainModel {
    */
   public void resetFilter() {
     isFilterApplied = false;
+    filterSearchResultBeanOnlyProperty = null;
     listCount = 0;
 
     int len = filterSectionBeans.size();

+ 1 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/category/CategoryFilterPresenter.java

@@ -131,8 +131,8 @@ public abstract class CategoryFilterPresenter<M extends CategoryFilterModel, V e
             // 정렬 순서가 다르면 다시 로드한다.
             model.loadContents();
           }
-            view.setFilterIcon(model.isFilterApplied());
 
+          view.setFilterIcon(model.isFilterApplied());
 
         }
         break;

+ 0 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/search/SearchResultModel.java

@@ -632,10 +632,7 @@ public class SearchResultModel extends Model {
     // 필터링 처리한 임시 데이터
     List<SearchContentsBean> targetList = resultContentsBeans;  // 우선 전체 데이터로 지정
 
-    // todo 필터링 된 데이터를 그대로 쓰면 안되고,
     // 지역 필터 적용 이전의 데이터를 저장해두고 넘겨줘야 한다.
-    // 필터링 한 데이터가 있다면 그것을 이용
-    //
     if (null != filterSearchResultBeanOnlyProperty) {
       // 일치하는 결과가 있음.
       if (null != filterSearchResultBeanOnlyProperty.getTagBeans() && filterSearchResultBeanOnlyProperty.getTagBeans().size() > 0) {