diff --git a/app/src/main/java/com/example/nemophila/MapsActivity.java b/app/src/main/java/com/example/nemophila/MapsActivity.java index 7b397b5..658f065 100644 --- a/app/src/main/java/com/example/nemophila/MapsActivity.java +++ b/app/src/main/java/com/example/nemophila/MapsActivity.java @@ -43,6 +43,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -65,6 +66,8 @@ boolean isGenre; String genreData[]; ArrayList UsersData; + String iconUrlString; + String iconUrlStringFriend; @Override @@ -256,14 +259,19 @@ isGenre = false; //アイコン仮セット - String iconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg"; + //iconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg"; //本来はuidからurl作る -// String iconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/icon" + myUid + ".jpg"; + + //自分のアイコンを取得 + String uid = nemophila.getUid(); + iconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/icon"+uid+".jpg";; // 一度リストのデータを取り除いてから追加する listData.clear(); FilterDataModel fd = new FilterDataModel(); + + //まず自分をトップに表示する fd.setText(nemophila.getUid()); fd.setNameText(nemophila.getName()); executor.execute(() -> { @@ -287,68 +295,87 @@ } }); listData.add(fd); - - for (AccountNameJson friend : nemophila.getFriends()) { - if(s == null) { - FilterDataModel fd2 = new FilterDataModel(); - fd2.setText(friend.getUid()); - fd2.setNameText(friend.getName()); - executor.execute(() -> { + //自分の下にフレンド + executor.execute(() -> { + HashMap bitmaps = new HashMap<>(); + HashMap fds = new HashMap<>(); + for (AccountNameJson friend : nemophila.getFriends()) { + if(s == null) { + FilterDataModel fd2 = new FilterDataModel(); + String fUid = friend.getUid(); + fd2.setText(fUid); + fd2.setNameText(friend.getName()); + //HashMapに追加しておく + fds.put(friend,fd2); + //そのユーザーのアイコン画像URLを指定 + iconUrlStringFriend = ("http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/icon"+fUid+".jpg"); try{ - URL iconUrl = new URL(iconUrlString); + URL iconUrl = new URL(iconUrlStringFriend); HttpURLConnection con = (HttpURLConnection) iconUrl.openConnection(); con.connect(); InputStream is = con.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(is); - handler.post(() -> { - fd2.setImage(bitmap); - MyAdapter adapter = (MyAdapter) list.getAdapter(); - adapter.notifyDataSetChanged(); - }); + bitmaps.put(friend, bitmap); is.close(); con.disconnect(); }catch (Exception e){ e.printStackTrace(); } - }); - listData.add(fd2); + listData.add(fd2); - } else { - //検索にヒットしたフレンドのみのリストにする - if(friend.getName().contains(s)){ - FilterDataModel fd2 = new FilterDataModel(); - fd2.setText(friend.getUid()); - fd2.setNameText(friend.getName()); - - executor.execute(() -> { + } else { + //検索にヒットしたフレンドのみのリストにする + if(friend.getName().contains(s)){ + FilterDataModel fd2 = new FilterDataModel(); + String fUid = friend.getUid(); + fd2.setText(fUid); + fd2.setNameText(friend.getName()); + //HashMapに追加しておく + fds.put(friend,fd2); + //そのユーザーのアイコン画像URLを指定 + iconUrlStringFriend = ("http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/icon"+fUid+".jpg"); try{ - URL iconUrl = new URL(iconUrlString); + URL iconUrl = new URL(iconUrlStringFriend); HttpURLConnection con = (HttpURLConnection) iconUrl.openConnection(); con.connect(); InputStream is = con.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(is); - handler.post(() -> { - fd2.setImage(bitmap); - MyAdapter adapter = (MyAdapter) list.getAdapter(); - adapter.notifyDataSetChanged(); - }); + bitmaps.put(friend, bitmap); is.close(); con.disconnect(); }catch (Exception e){ e.printStackTrace(); } - }); - listData.add(fd2); + listData.add(fd2); + } } } - } + + for (AccountNameJson friend : nemophila.getFriends()) { + if(s == null) { + handler.post(() -> { + fds.get(friend).setImage(bitmaps.get(friend)); + MyAdapter adapter = (MyAdapter) list.getAdapter(); + adapter.notifyDataSetChanged(); + }); + } else { + if(friend.getName().contains(s)) { + handler.post(() -> { + fds.get(friend).setImage(bitmaps.get(friend)); + MyAdapter adapter = (MyAdapter) list.getAdapter(); + adapter.notifyDataSetChanged(); + }); + } + } + } + }); // ListViewにデータをセットする list.setAdapter(new MyAdapter( diff --git a/app/src/main/java/com/example/nemophila/MapsFragment.java b/app/src/main/java/com/example/nemophila/MapsFragment.java index 7376a4d..a290a78 100644 --- a/app/src/main/java/com/example/nemophila/MapsFragment.java +++ b/app/src/main/java/com/example/nemophila/MapsFragment.java @@ -210,14 +210,14 @@ // test用 座標を確認するため // タップした時のリスナーをセット - mMap.setOnMapClickListener(tapLocation -> { - // map(ピン以外)をtapされた位置の緯度経度を取得 - tapLatlng = new LatLng(tapLocation.latitude, tapLocation.longitude); - Toast.makeText(getActivity(), - String.format("%s", tapLatlng), - Toast.LENGTH_SHORT) - .show(); - }); +// mMap.setOnMapClickListener(tapLocation -> { +// // map(ピン以外)をtapされた位置の緯度経度を取得 +// tapLatlng = new LatLng(tapLocation.latitude, tapLocation.longitude); +// Toast.makeText(getActivity(), +// String.format("%s", tapLatlng), +// Toast.LENGTH_SHORT) +// .show(); +// }); //長押し時に店を作成し、その座標にピンを立てる