diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 78b143c..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/java/com/example/nemophila/MapsActivity.java b/app/src/main/java/com/example/nemophila/MapsActivity.java index e760779..569eb29 100644 --- a/app/src/main/java/com/example/nemophila/MapsActivity.java +++ b/app/src/main/java/com/example/nemophila/MapsActivity.java @@ -15,7 +15,19 @@ import android.view.MenuItem; -public class MapsActivity extends AppCompatActivity { +public class MapsActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { + + + DialogFragment filterDialog; + private Handler handler; + + // フィルターのリスト用 + ArrayList listData; + ListView list; + boolean isGenre; + String genreData[]; + String friendsData[]; + @Override protected void onCreate(Bundle savedInstanceState) { @@ -26,24 +38,132 @@ 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(); +// // ナビゲーションホストを取得する +// NavHostFragment navHostFragment = +// (NavHostFragment)getSupportFragmentManager() +// .findFragmentById(R.id.navHostFragment); +// +// // navHostFragmentのナビゲーションコントローラを取得する +// NavController navController = navHostFragment.getNavController(); +// +// // アップバーのコンフィグレーションをビルドする +// AppBarConfiguration appBarConfiguration = +// new AppBarConfiguration.Builder(navController.getGraph()) +// .setOpenableLayout((DrawerLayout)findViewById(R.id.drawer_layout)) +// .build(); +// +// // ナビゲーションUIをセットアップする +// NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration); - // ナビゲーションUIをセットアップする - NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration); + + // geocode Test + handler = new Handler(); + + // 検索バーの処理 + 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 +178,123 @@ 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(); + } + + // 内部クラス + 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) { + Toast.makeText(MapsActivity.this, listData.get(position).getText(), Toast.LENGTH_SHORT).show(); + } + 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/res/layout/activity_maps.xml b/app/src/main/res/layout/activity_maps.xml index 7636d4b..37b98b3 100644 --- a/app/src/main/res/layout/activity_maps.xml +++ b/app/src/main/res/layout/activity_maps.xml @@ -68,6 +68,61 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" - app:menu="@menu/navdrawer_menu" /> + app:menu="@menu/navdrawer_menu" > + + + + + + +