diff --git a/app/src/main/java/com/example/nemophila/MapsActivity.java b/app/src/main/java/com/example/nemophila/MapsActivity.java index fb225ff..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,9 +259,12 @@ 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(); @@ -291,69 +297,85 @@ listData.add(fd); //自分の下にフレンド - for (AccountNameJson friend : nemophila.getFriends()) { - if(s == null) { - FilterDataModel fd2 = new FilterDataModel(); - fd2.setText(friend.getUid()); - fd2.setNameText(friend.getName()); - //そのユーザーのアイコン画像URLを指定 - - 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()); - //そのユーザーのアイコン画像URLを指定 - - 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(