Browse Source

[검색][New] 태그 적어도 1개는 선택되어있도록 수정

hyodong.min 6 years ago
parent
commit
c0fc3191d3

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

@@ -152,6 +152,9 @@ public class SearchResultFragment extends FragmentBase<SearchResultPresenter> im
       });
       recyclerViewTags.setAdapter(tagAdapter);
     }
+    else {
+      tagAdapter.update(tagBeans);
+    }
   }
 
   @Override

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

@@ -196,6 +196,33 @@ public class SearchResultModel extends Model {
     }
   }
 
+  /**
+   * 선택 태그 상태 변경
+   *
+   * @param index
+   * @param isChecked
+   */
+  public void checkTag(int index, boolean isChecked) {
+    Log.w("APP# checkTag | search", "|" + " prev searchTags: " + Arrays.toString(searchTags));
+    Log.w("APP# checkTag | search", "|" + " index: " + index + ", isChecked: " + isChecked);
+    TagCheckBean tagCheckBean = tagCheckBeans.get(index);
+    tagCheckBean.setChecked(isChecked);
+  }
+
+  /**
+   * 모든 태그가 비활성 됐는지 확인
+   *
+   * @return
+   */
+  public boolean isAllTagUnchecked() {
+    for (TagCheckBean tagCheckBean : tagCheckBeans) {
+      if (tagCheckBean.isChecked()) {
+        return false;
+      }
+    }
+    return true;
+  }
+
   /**
    * 상단 태그 선택하여 검색
    *
@@ -206,8 +233,7 @@ public class SearchResultModel extends Model {
 
     Log.w("APP# SearchResultModel | search", "|" + " prev searchTags: " + Arrays.toString(searchTags));
     Log.w("APP# SearchResultModel | search", "|" + " index: " + index + ", isChecked: " + isChecked);
-    TagCheckBean tagCheckBean = tagCheckBeans.get(index);
-    tagCheckBean.setChecked(isChecked);
+    TagCheckBean tagCheckBean;
     StringBuilder builder = new StringBuilder();
 
     // 선택된 태그를 조합

+ 9 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/search/SearchResultPresenter.java

@@ -129,7 +129,15 @@ public class SearchResultPresenter extends Presenter<SearchResultModel, ISearchR
         // tag 선택
         index = event.getIndex();
         boolean isChecked = event.getBool();
-        model.search(index, isChecked);
+        model.checkTag(index, isChecked);
+        if (model.isAllTagUnchecked()) {
+          // 모든 태그가 비활성화 됐다면, 하나는 선택된 상태로 둔다.
+          model.checkTag(index, !isChecked);
+          view.drawTags(model.getTagCheckBeans(), model.hasResult());
+        }
+        else {
+          model.search(index, isChecked);
+        }
         break;
       case Event.CATEGORY_CLICK:
         index = event.getIndex();