|
|
@@ -121,12 +121,21 @@ public class SearchFilterDetailDialog extends DialogBase<ISearchFilterListener<S
|
|
|
filterMap = new HashMap<>();
|
|
|
|
|
|
// 하나만 선택 할 수 있도록
|
|
|
- SingleSelector selector = new SingleSelector((checked, unchecked) -> {
|
|
|
- if (null != checked) {
|
|
|
- setSelected(checked, true);
|
|
|
+ SingleSelector selector = new SingleSelector(new SingleSelector.Listener() {
|
|
|
+ @Override
|
|
|
+ public void onChecked(Checkable trigger, boolean isTriggerChecked, List<Checkable> unchecked) {
|
|
|
+ setSelected(trigger, isTriggerChecked);
|
|
|
+
|
|
|
+ for (Checkable checkable : unchecked) {
|
|
|
+ setSelected(checkable, false);
|
|
|
+ }
|
|
|
}
|
|
|
- for (Checkable checkable : unchecked) {
|
|
|
- setSelected(checkable, false);
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onUnchecked(List<Checkable> unchecked) {
|
|
|
+ for (Checkable checkable : unchecked) {
|
|
|
+ setSelected(checkable, false);
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
|
|
|
@@ -148,23 +157,7 @@ public class SearchFilterDetailDialog extends DialogBase<ISearchFilterListener<S
|
|
|
|
|
|
filterMap.put(checkBoxAll, tagBean);
|
|
|
|
|
|
- if (isMultiSelection) {
|
|
|
- checkBoxAll.setOnClickListener(v -> {
|
|
|
- setSelected((Checkable) v, true);
|
|
|
- });
|
|
|
- }
|
|
|
- else {
|
|
|
- selector.addChildBox(checkBoxAll);
|
|
|
- checkBoxAll.setOnClickListener(v -> {
|
|
|
- if (selector.contains((Checkable) v)) {
|
|
|
- // 셀렉터에 포함되있으면 셀렉터에서 처리
|
|
|
- selector.check((Checkable) v);
|
|
|
- }
|
|
|
- else {
|
|
|
- setSelected((Checkable) v, true);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
+ attachEvent(checkBoxAll, selector);
|
|
|
|
|
|
// 선택 표시
|
|
|
checkBoxAll.setChecked(tagBean.isSelected());
|
|
|
@@ -192,29 +185,7 @@ public class SearchFilterDetailDialog extends DialogBase<ISearchFilterListener<S
|
|
|
// 핫플레이스는 filter name, 지역은 tagNo 를 api 에 이용한다.
|
|
|
filterMap.put(checkBox, tagBean);
|
|
|
|
|
|
- if (isMultiSelection) {
|
|
|
- checkBox.setOnClickListener(v -> {
|
|
|
- setSelected((Checkable) v, true);
|
|
|
- });
|
|
|
- }
|
|
|
- else {
|
|
|
- selector.addChildBox(checkBox);
|
|
|
- checkBox.setOnClickListener(v -> {
|
|
|
- Checkable cb = (Checkable) v;
|
|
|
- if (selector.contains(cb)) {
|
|
|
- if (cb.isChecked()) {
|
|
|
- // 셀렉터에 포함되있으면 셀렉터에서 처리
|
|
|
- selector.check(cb);
|
|
|
- }
|
|
|
- else {
|
|
|
- setSelected(cb, false);
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- setSelected(cb, cb.isChecked());
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
+ attachEvent(checkBox, selector);
|
|
|
|
|
|
// 선택 표시
|
|
|
checkBox.setChecked(tagBean.isSelected());
|
|
|
@@ -231,6 +202,30 @@ public class SearchFilterDetailDialog extends DialogBase<ISearchFilterListener<S
|
|
|
container.addView(space, layoutParams);
|
|
|
}
|
|
|
|
|
|
+ private void attachEvent(CustomCheckBox checkBox, SingleSelector selector) {
|
|
|
+
|
|
|
+ if (isMultiSelection) {
|
|
|
+ checkBox.setOnClickListener(v -> {
|
|
|
+ Checkable cb = (Checkable) v;
|
|
|
+ setSelected((Checkable) v, cb.isChecked());
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ selector.addChildBox(checkBox);
|
|
|
+ checkBox.setOnClickListener(v -> {
|
|
|
+ Checkable cb = (Checkable) v;
|
|
|
+ if (selector.contains(cb)) {
|
|
|
+ // 셀렉터에 포함되있으면 셀렉터에서 처리
|
|
|
+ selector.check(cb, cb.isChecked());
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ setSelected(cb, cb.isChecked());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
private void setSelected(Checkable checkBox, boolean isCheck) {
|
|
|
FilterTagBean tagBean = filterMap.get(checkBox);
|
|
|
checkBox.setChecked(isCheck);
|