diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index d6fdd9e..7bd27ea 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -7,11 +7,11 @@
-
+
-
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0407368..b19b47f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -26,7 +26,8 @@
+ android:label="Map"
+ android:windowSoftInputMode="adjustPan">
@@ -63,12 +64,12 @@
android:exported="true"
android:label="@string/title_activity_sign_up">
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
+
+
+
-
+
listData;
+ ListView list;
+ boolean isGenre;
+ String genreData[];
+ String friendsData[];
+
@Override
protected void onCreate(Bundle savedInstanceState) {
+
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
+ nemophila = (Nemophila) this.getApplication();
+
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
- // ナビゲーションホストを取得する
- NavHostFragment navHostFragment =
- (NavHostFragment)getSupportFragmentManager()
- .findFragmentById(R.id.navHostFragment);
+ // DrawerToggle
+ DrawerLayout drawer =
+ (DrawerLayout) findViewById(R.id.drawer_layout);
+ ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
+ this, drawer, toolbar,
+ R.string.drawer_open,
+ R.string.drawer_close);
+ drawer.addDrawerListener(toggle);
+ toggle.syncState();
- // navHostFragmentのナビゲーションコントローラを取得する
- NavController navController = navHostFragment.getNavController();
+ // NavigationView Listener
+ NavigationView navigationView = (NavigationView) findViewById(R.id.navView);
+ navigationView.setNavigationItemSelectedListener(this);
- // アップバーのコンフィグレーションをビルドする
- AppBarConfiguration appBarConfiguration =
- new AppBarConfiguration.Builder(navController.getGraph())
- .setOpenableLayout((DrawerLayout)findViewById(R.id.drawer_layout))
- .build();
+ // geocode Test
+ handler = new Handler();
- // ナビゲーションUIをセットアップする
- NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration);
+// // 検索バーの処理
+// SearchView searchView = findViewById(R.id.tool_search);
+// searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
+// @Override
+// public boolean onQueryTextSubmit(String query) {
+// new Thread(() -> {
+// geoCode(query);
+// }).start();
+// return false;
+// }
+//
+// @Override
+// public boolean onQueryTextChange(String newText) {
+// return false;
+// }
+// });
+
+ //filterDialog = new FilterDialog();
+
+ // サイドメニューのボタン
+ Button genreButton = findViewById(R.id.filter_genre_button);
+ Button friendButton = findViewById(R.id.filter_friends_button);
+
+ // 押したボタンを灰色にし、listを作成
+ genreButton.setOnClickListener(view -> {
+ genreButton.setBackgroundColor(Color.parseColor("#afafb0"));
+ friendButton.setBackgroundColor(Color.WHITE);
+ prepareGenreList(null);
+ });
+ friendButton.setOnClickListener(view -> {
+ friendButton.setBackgroundColor(Color.parseColor("#afafb0"));
+ genreButton.setBackgroundColor(Color.WHITE);
+ prepareFriendList(null);
+ });
+
+ // サイドメニューのフィルターのリストの準備
+ genreData = new String[5];
+ friendsData = new String[5];
+ genreData[0] = "和食";
+ genreData[1] = "中華";
+ genreData[2] = "イタリアン";
+ genreData[3] = "洋食";
+ genreData[4] = "ジャンクフード";
+
+ friendsData[0] = "iyo";
+ friendsData[1] = "iyo2";
+ friendsData[2] = "superiyo";
+ friendsData[3] = "perfectiyo";
+ friendsData[4] = "finaliyo";
+
+ listData = new ArrayList<>();
+ list = findViewById(R.id.drawer_list);
+ prepareGenreList(null);
+
+ // フィルターを有効にする
+ list.setTextFilterEnabled(true);
+
+ //サイドメニューの検索バー
+ SearchView listSearch = findViewById(R.id.drawer_search);
+ listSearch.setOnQueryTextListener(
+ new SearchView.OnQueryTextListener() {
+ // 入力テキストに変更があったとき
+ @Override
+ public boolean onQueryTextChange(String s) {
+ if(isGenre){
+ if(s.equals("")){
+ prepareGenreList(null);
+ } else {
+ prepareGenreList(s);
+ }
+ } else {
+ if(s.equals("")){
+ prepareFriendList(null);
+ } else {
+ prepareFriendList(s);
+ }
+ }
+ return false;
+ }
+
+ // 検索ボタンを押したとき
+ @Override
+ public boolean onQueryTextSubmit(String s) {
+ return false;
+ }
+ }
+ );
+
}
+ //右上のメニューを用意、マイページ画面への遷移
@Override
public boolean onCreateOptionsMenu(@NonNull Menu menu) {
getMenuInflater().inflate(R.menu.tool_menu, menu);
@@ -58,4 +184,140 @@
return super.onOptionsItemSelected(item);
}
+
+ public void prepareGenreList(String s){
+ // 現在表示されているリストがジャンルのリストかどうかを設定
+ isGenre = true;
+
+ // 一度リストのデータを取り除いてから追加する
+ listData.clear();
+ for(int i = 0; i < genreData.length; i++){
+ if(s == null) {
+ FilterDataModel fd = new FilterDataModel();
+ fd.setText(genreData[i]);
+ listData.add(fd);
+ } else {
+ if(genreData[i].contains(s)){
+ FilterDataModel fd = new FilterDataModel();
+ fd.setText(genreData[i]);
+ listData.add(fd);
+ }
+ }
+ }
+
+ // ListViewにデータをセットする
+ list.setAdapter(new MyAdapter(
+ this,
+ R.layout.filter_layout,
+ listData
+ ));
+ list.deferNotifyDataSetChanged();
+ }
+
+ public void prepareFriendList(String s){
+ // 現在表示されているリストがジャンルのリストかどうかを設定
+ isGenre = false;
+
+ // 一度リストのデータを取り除いてから追加する
+ listData.clear();
+ for(int i = 0; i < friendsData.length; i++){
+ if(s == null) {
+ FilterDataModel fd = new FilterDataModel();
+ fd.setText(friendsData[i]);
+ listData.add(fd);
+ } else {
+ if(friendsData[i].contains(s)){
+ FilterDataModel fd = new FilterDataModel();
+ fd.setText(friendsData[i]);
+ listData.add(fd);
+ }
+ }
+ }
+
+ // ListViewにデータをセットする
+ list.setAdapter(new MyAdapter(
+ this,
+ R.layout.filter_layout,
+ listData
+ ));
+ list.deferNotifyDataSetChanged();
+ }
+
+ @Override
+ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
+ return false;
+ }
+
+ // 内部クラス
+ private class MyAdapter extends ArrayAdapter {
+ private LayoutInflater layoutInflater;
+ public MyAdapter(Context context, int resourceId, List objects){
+ super(context, resourceId, objects);
+
+ layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ }
+
+ // 画面外に行ったときにチェックがずれないようにする
+ @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);
+ }
+
+ TextView textView = convertView.findViewById(R.id.filter_text);
+ textView.setText(item.text);
+ CheckBox checkBox = convertView.findViewById(R.id.filter_checkbox);
+ checkBox.setOnCheckedChangeListener(null);
+ checkBox.setChecked(item.isChecked);
+
+ // チェックボックスを押したときの処理
+ checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
+ if(b) {
+ if(isGenre) {
+ //Toast.makeText(MapsActivity.this, listData.get(position).getText(), Toast.LENGTH_SHORT).show();
+ nemophila.setSelectGenres(listData.get(position).getText());
+ } else {
+ nemophila.setSelectFriends(listData.get(position).getText());
+ }
+ } else {
+ if(isGenre) {
+ //Toast.makeText(MapsActivity.this, listData.get(position).getText(), Toast.LENGTH_SHORT).show();
+ nemophila.removeSelectGenres(listData.get(position).getText());
+ } else {
+ nemophila.removeSelectFriends(listData.get(position).getText());
+ }
+ }
+ FilterDataModel data = getItem(position);
+ data.isChecked = b;
+ }
+ });
+
+ return convertView;
+ }
+ }
+
+ private static class FilterDataModel{
+ private String text;
+ private boolean isChecked;
+
+ public String getText() {
+ return text;
+ }
+
+ public boolean isChecked() {
+ return isChecked;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+
+ public void setChecked(boolean checked) {
+ isChecked = checked;
+ }
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/nemophila/MapsFragment.java b/app/src/main/java/com/example/nemophila/MapsFragment.java
index a1c429c..212503d 100644
--- a/app/src/main/java/com/example/nemophila/MapsFragment.java
+++ b/app/src/main/java/com/example/nemophila/MapsFragment.java
@@ -78,6 +78,7 @@
nemophila = (Nemophila) getActivity().getApplication();
mMap = googleMap;
+
//ViewModelへのアクセス
shopsViewModel = new ViewModelProvider(getActivity()).get(ShopsViewModel.class);
diff --git a/app/src/main/res/layout/activity_maps.xml b/app/src/main/res/layout/activity_maps.xml
index 7636d4b..df097a4 100644
--- a/app/src/main/res/layout/activity_maps.xml
+++ b/app/src/main/res/layout/activity_maps.xml
@@ -29,9 +29,10 @@
app:menu="@menu/tool_menu">
+ android:layout_height="wrap_content"
+ app:queryHint="地名検索"/>
@@ -68,6 +69,61 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
- app:menu="@menu/navdrawer_menu" />
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/filter_item.xml b/app/src/main/res/layout/filter_item.xml
new file mode 100644
index 0000000..4902074
--- /dev/null
+++ b/app/src/main/res/layout/filter_item.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/filter_layout.xml b/app/src/main/res/layout/filter_layout.xml
new file mode 100644
index 0000000..166c128
--- /dev/null
+++ b/app/src/main/res/layout/filter_layout.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 74d3ed7..81b0dfc 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -21,4 +21,7 @@
Forgot Password?
Button
+ Drawer Open
+ Drawer Close
+
\ No newline at end of file