|
|
@@ -1,6 +1,5 @@
|
|
|
package kr.co.zumo.app.lifeplus.view.dialog;
|
|
|
|
|
|
-import android.content.Context;
|
|
|
import android.os.Bundle;
|
|
|
import android.support.annotation.NonNull;
|
|
|
import android.support.annotation.Nullable;
|
|
|
@@ -24,6 +23,7 @@ import kr.co.zumo.app.R;
|
|
|
import kr.co.zumo.app.lifeplus.bean.SearchFilterSectionBean;
|
|
|
import kr.co.zumo.app.lifeplus.bean.api.LifeplusData;
|
|
|
import kr.co.zumo.app.lifeplus.bean.api.SearchFilterBean;
|
|
|
+import kr.co.zumo.app.lifeplus.helper.NavigationBar;
|
|
|
import kr.co.zumo.app.lifeplus.util.ResourceUtil;
|
|
|
import kr.co.zumo.app.lifeplus.util.StringUtil;
|
|
|
import kr.co.zumo.app.lifeplus.view.Event;
|
|
|
@@ -66,7 +66,9 @@ public class SearchFilterDialog extends DialogBase<ISearchFilterListener<SearchF
|
|
|
*/
|
|
|
public void setFilter(List<SearchFilterSectionBean> filterList, List<SearchFilterBean> selectedList, int filteredContentsCount) {
|
|
|
filterDataSectionBeans = filterList;
|
|
|
- this.selectedList = selectedList;
|
|
|
+ if(null != selectedList) {
|
|
|
+ this.selectedList = new ArrayList<>(selectedList); // 데이터를 복제해서 사용, 내부에서 배열을 변형한다. 외부로 전달할 때도 각 데이터들을 취합해서 전달해주므로 원형을 유지할 필요가 없음.
|
|
|
+ }
|
|
|
this.filteredContentsCount = filteredContentsCount;
|
|
|
}
|
|
|
|
|
|
@@ -96,8 +98,21 @@ public class SearchFilterDialog extends DialogBase<ISearchFilterListener<SearchF
|
|
|
buttonLoadingView = getView().findViewById(R.id.button_loading_view);
|
|
|
buttonLoadingView.draw(getView().getContext());
|
|
|
|
|
|
- applyAnimation();
|
|
|
+ // navigation var setting
|
|
|
+ ((ViewGroup) getView().findViewById(R.id.container_navigation_bar))
|
|
|
+ .addView(
|
|
|
+ new NavigationBar.Builder(getContext())
|
|
|
+ .title(R.string.filter)
|
|
|
+ .close(navigationBar -> {
|
|
|
+ if (null != getCustomListener()) {
|
|
|
+ getCustomListener().onDialogCanceled(SearchFilterDialog.this);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .build()
|
|
|
+ .getView()
|
|
|
+ );
|
|
|
|
|
|
+ applyAnimation();
|
|
|
applyFullScreen();
|
|
|
|
|
|
if (null == selectedList) {
|
|
|
@@ -110,12 +125,6 @@ public class SearchFilterDialog extends DialogBase<ISearchFilterListener<SearchF
|
|
|
|
|
|
getView().setPadding(0, ResourceUtil.getStatusBarHeight(), 0, ResourceUtil.getNavBarHeight());
|
|
|
|
|
|
- getView().findViewById(R.id.image_view_cancel_main).setOnClickListener(view -> {
|
|
|
- if (null != getCustomListener()) {
|
|
|
- getCustomListener().onDialogCanceled(SearchFilterDialog.this);
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
getView().findViewById(R.id.text_view_reset).setOnClickListener(view -> {
|
|
|
reset();
|
|
|
applyContentsNumber();
|
|
|
@@ -130,13 +139,14 @@ public class SearchFilterDialog extends DialogBase<ISearchFilterListener<SearchF
|
|
|
|
|
|
/**
|
|
|
* 외부에서 전달되는 selectedList 에는 세부 (지역/핫플레이스 등)이 포함되므로 이를 제외하고 속성만 사용한다.
|
|
|
+ * - 디테일 속성은 map 에 저정
|
|
|
* - 디테일인지 여부는 level = FILTER_LEVEL_DETAIL
|
|
|
*/
|
|
|
private void parseSelectedList() {
|
|
|
Log.w("APP# SearchFilterDialog | parseSelectedList", "| before: " + selectedList.size());
|
|
|
for (Iterator<SearchFilterBean> it = selectedList.iterator(); it.hasNext(); ) {
|
|
|
SearchFilterBean value = it.next();
|
|
|
- if (value.getFilterLevel().equals(SearchFilterBean.FILTER_LEVEL_DETAIL)) {
|
|
|
+ if (SearchFilterBean.FILTER_LEVEL_DETAIL.equals(value.getFilterLevel())) {
|
|
|
List<SearchFilterBean> list = selectedDetailTagMap.get(value.getFilterNo());
|
|
|
if (null == list) {
|
|
|
selectedDetailTagMap.put(value.getFilterNo(), new ArrayList<>());
|
|
|
@@ -157,18 +167,13 @@ public class SearchFilterDialog extends DialogBase<ISearchFilterListener<SearchF
|
|
|
* @return
|
|
|
*/
|
|
|
private List<SearchFilterBean> getSelectedList() {
|
|
|
- List<SearchFilterBean> mergedList = new ArrayList<>();
|
|
|
|
|
|
-// Log.w("APP# SearchFilterDialog | getSelectedList", "|" + "selectedList.size() : " + selectedList.size());
|
|
|
- mergedList.addAll(selectedList);
|
|
|
+ List<SearchFilterBean> mergedList = new ArrayList<>(selectedList);
|
|
|
|
|
|
for (List<SearchFilterBean> searchFilterBeans : selectedDetailTagMap.values()) {
|
|
|
-// Log.i("APP# SearchFilterDialog | getSelectedList", "|" + "searchFilterBeans.size() : " + searchFilterBeans.size());
|
|
|
mergedList.addAll(searchFilterBeans);
|
|
|
}
|
|
|
|
|
|
-// Log.w("APP# SearchFilterDialog | getSelectedList", "|" + "mergedList.size() : " + mergedList.size());
|
|
|
-
|
|
|
return mergedList;
|
|
|
}
|
|
|
|
|
|
@@ -183,7 +188,7 @@ public class SearchFilterDialog extends DialogBase<ISearchFilterListener<SearchF
|
|
|
|
|
|
parseSelectedList();
|
|
|
|
|
|
- LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
|
|
+ LayoutInflater inflater = LayoutInflater.from(getContext());
|
|
|
|
|
|
ViewGroup container = getView().findViewById(R.id.layout_container);
|
|
|
|
|
|
@@ -223,7 +228,6 @@ public class SearchFilterDialog extends DialogBase<ISearchFilterListener<SearchF
|
|
|
CustomSquareArrowCheckBox arrowCheckBox = new CustomSquareArrowCheckBox(getContext());
|
|
|
filterMap.put(arrowCheckBox, filterBean);
|
|
|
|
|
|
-// arrowCheckBox.setCheckBoxEnabled(false);
|
|
|
arrowCheckBox.setText(filterBean.getFilterName());
|
|
|
// touch event
|
|
|
arrowCheckBox.setOnClickListener(v -> {
|
|
|
@@ -335,9 +339,8 @@ public class SearchFilterDialog extends DialogBase<ISearchFilterListener<SearchF
|
|
|
else {
|
|
|
title = ResourceUtil.getString(R.string.search_filter_detail_title, searchFilterBean.getFilterName());
|
|
|
}
|
|
|
- List<SearchFilterBean> list = selectedDetailTagMap.get(searchFilterBean.getFilterNo());
|
|
|
dialog.setFilterDetail(searchFilterBean.getTagBeans(),
|
|
|
- list,
|
|
|
+ selectedDetailTagMap.get(searchFilterBean.getFilterNo()),
|
|
|
title,
|
|
|
LifeplusData.isTrue(searchFilterBean.getMultiSelection()),
|
|
|
searchFilterBean.getFilterType(),
|