diff --git a/app/src/main/java/com/example/nemophila/MapsActivity.java b/app/src/main/java/com/example/nemophila/MapsActivity.java index 65b1128..0702432 100644 --- a/app/src/main/java/com/example/nemophila/MapsActivity.java +++ b/app/src/main/java/com/example/nemophila/MapsActivity.java @@ -53,7 +53,7 @@ FriendViewModel friendViewModel; DialogFragment filterDialog; private Handler handler; - private HashMap NameToId; + //private HashMap NameToId; // フィルターのリスト用 @@ -133,7 +133,7 @@ // サイドメニューのフィルターのリストの準備 genreData = new String[]{"中華", "和食", "イタリアン", "フレンチ", "カフェ", "バー", "居酒屋", "ラーメン", "うどん・そば", "その他 海外料理"}; friendsData = new ArrayList<>(); - NameToId = new HashMap<>(); + //NameToId = new HashMap<>(); // friendsData[0] = "iyo"; // friendsData[1] = "iyo2"; @@ -147,8 +147,8 @@ @Override public void onChanged(Collection friends) { for (AccountNameJson friend : friends) { - friendsData.add(friend.getName()); - NameToId.put(friend.getName(), friend.getUid()); + friendsData.add(friend.getUid()); + //NameToId.put(friend.getName(), friend.getUid()); } } }); @@ -253,13 +253,15 @@ for (AccountNameJson friend : nemophila.getFriends()) { if(s == null) { FilterDataModel fd = new FilterDataModel(); - fd.setText(friend.getName()); + fd.setText(friend.getUid()); + fd.setNameText(friend.getName()); listData.add(fd); } else { //検索にヒットしたフレンドのみのリストにする if(friend.getName().contains(s)){ FilterDataModel fd = new FilterDataModel(); - fd.setText(friend.getName()); + fd.setText(friend.getUid()); + fd.setNameText(friend.getName()); listData.add(fd); } } @@ -291,19 +293,34 @@ // 画面外に行ったときにチェックがずれないようにする @Override public View getView(int position, View convertView, ViewGroup parent) { - FilterDataModel item = (FilterDataModel) getItem(position); - if (convertView == null) { - convertView = layoutInflater.inflate(R.layout.filter_item, null); - } + CheckBox checkBox; - TextView textView = convertView.findViewById(R.id.filter_text); - textView.setText(item.text); - CheckBox checkBox = convertView.findViewById(R.id.filter_checkbox); - checkBox.setOnCheckedChangeListener(null); - //チェック済みの項目をチェックにしておく if(isGenre) { + FilterDataModel item = (FilterDataModel) getItem(position); + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.filter_item, null); + } + + TextView textView = convertView.findViewById(R.id.filter_text); + textView.setText(item.text); + checkBox = convertView.findViewById(R.id.filter_checkbox); + checkBox.setOnCheckedChangeListener(null); + //チェック済みの項目をチェックにしておく checkBox.setChecked(nemophila.getSelectGenres().contains(item.getText())); } else { + FilterDataModel item = (FilterDataModel) getItem(position); + if (convertView == null) { + convertView = layoutInflater.inflate(R.layout.filter_friend_item, null); + } + + TextView textView = convertView.findViewById(R.id.filter_text); + TextView nameTextView = convertView.findViewById(R.id.filter_name); + textView.setText(item.text); + nameTextView.setText(item.nameText); + + checkBox = convertView.findViewById(R.id.filter_checkbox); + checkBox.setOnCheckedChangeListener(null); + //チェック済みの項目をチェックにしておく checkBox.setChecked(nemophila.getSelectFriends().contains(item.getText())); } @@ -316,7 +333,7 @@ //Toast.makeText(MapsActivity.this, listData.get(position).getText(), Toast.LENGTH_SHORT).show(); nemophila.setSelectGenres(listData.get(position).getText()); } else { - nemophila.setSelectFriends(NameToId.get(listData.get(position).getText())); + nemophila.setSelectFriends(listData.get(position).getText()); } } else { if(isGenre) { @@ -324,7 +341,7 @@ nemophila.removeSelectGenres(listData.get(position).getText()); } else { - nemophila.removeSelectFriends(NameToId.get(listData.get(position).getText())); + nemophila.removeSelectFriends(listData.get(position).getText()); } } FilterDataModel data = getItem(position); @@ -337,9 +354,14 @@ for (Shop shop : shops) { Marker setMarker = shopsViewModel.getMarker(shop); - if(nemophila.getSelectGenres().isEmpty()){ + + //場合分け + //フィルターを一切かけていないとき + if(nemophila.getSelectGenres().isEmpty() && nemophila.getSelectFriends().isEmpty()){ setMarker.setVisible(true); - } else { + } + //ジャンルのみフィルターをかけているとき + else if(nemophila.getSelectFriends().isEmpty()) { for(String genre : nemophila.getSelectGenres()) { if(shop.getGenreSet().contains(genre)) { setMarker.setVisible(true); @@ -348,11 +370,29 @@ } } } + //フレンドのみフィルターをかけているとき + else if(nemophila.getSelectGenres().isEmpty()) { + for(String friendId : nemophila.getSelectFriends()) { + if(shop.getUserIdSet().contains(friendId)) { + setMarker.setVisible(true); + } else { + setMarker.setVisible(false); + } + } + } + //どちらもフィルターをかけているとき + else { + for(String genre : nemophila.getSelectGenres()) { + for(String friendId : nemophila.getSelectFriends()) { + if (shop.getGenreSet().contains(genre) && shop.getUserIdSet().contains(friendId)) { + setMarker.setVisible(true); + } else { + setMarker.setVisible(false); + } + } + } + } } - -// if (!nemophila.getSelectFriends().isEmpty()) { -// setMaker.setVisible(false); -// } } } }); @@ -363,11 +403,16 @@ private static class FilterDataModel{ private String text; + private String nameText; + private boolean isChecked; public String getText() { return text; } + public String getNameText() { + return nameText; + } public boolean isChecked() { return isChecked; @@ -376,6 +421,9 @@ public void setText(String text) { this.text = text; } + public void setNameText(String text) { + this.nameText = text; + } public void setChecked(boolean checked) { isChecked = checked;