diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 91e56cf..7bdf5b3 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -7,11 +7,11 @@ - + - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 1adffca..14ff805 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -19,6 +19,7 @@ + @@ -49,10 +50,9 @@ - - + diff --git a/app/src/main/java/com/example/nemophila/FriendActivity.java b/app/src/main/java/com/example/nemophila/FriendActivity.java index 13ca487..4fc0b89 100644 --- a/app/src/main/java/com/example/nemophila/FriendActivity.java +++ b/app/src/main/java/com/example/nemophila/FriendActivity.java @@ -13,9 +13,12 @@ import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.PorterDuff; import android.os.Bundle; +import android.os.Handler; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; @@ -34,18 +37,28 @@ import com.example.nemophila.viewmodels.AccountViewModel; import com.example.nemophila.viewmodels.FriendViewModel; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class FriendActivity extends AppCompatActivity { private Nemophila nemophila; - FriendViewModel friendViewModel; - String uid; - String token; - String requestingId; - String requestingName; - String searchingId; + private FriendViewModel friendViewModel; + private String uid; + private String token; + private String requestingId; + private String requestingName; + private String searchingId; + private final ExecutorService executor = Executors.newSingleThreadExecutor(); + private final Handler handler = new Handler(); + private String friendIconUrlString; + private String requestingIconUrlString; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -56,6 +69,7 @@ RecyclerView friendRecyclerView = findViewById(R.id.friendsList); LinearLayout requestingConstraintLayout = findViewById(R.id.requestingLayout); + // フレンド一覧と申請先一覧の画面切り替え showFriend.setOnClickListener(v2 -> { friendRecyclerView.setVisibility(View.VISIBLE); requestingConstraintLayout.setVisibility(View.INVISIBLE); @@ -71,7 +85,8 @@ RecyclerView rv = findViewById(R.id.friendsList); // recyclerViewを取得 friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); // ViewModelを取得 nemophila = (Nemophila) this.getApplication(); - + uid = nemophila.getUid(); // 自身のidを取得 + token = nemophila.getToken(); // 自身のtokenを取得 //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言 LinearLayoutManager llm = new LinearLayoutManager(this); @@ -83,8 +98,6 @@ rv.setHasFixedSize(true); rv.setLayoutManager(llm); - uid = nemophila.getUid(); // 自身のidを取得 - token = nemophila.getToken(); // 自身のtokenを取得 // getFriendsの通信が呼び出されて、フレンドの一覧をfriendsDatasetに格納し、Adapterにセットする FriendActivityAdapter adapter = new FriendActivityAdapter(friendsDataset) { @Override @@ -126,6 +139,28 @@ FriendDataModel data = new FriendDataModel(); data.setName(friend.getName()); data.setId(friend.getUid()); + + //url作る + friendIconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg"; + executor.execute(() -> { + try{ + URL url = new URL(friendIconUrlString); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.connect(); + + InputStream is = con.getInputStream(); + + Bitmap bitmap = BitmapFactory.decodeStream(is); + handler.post(() -> { + data.setIcon(bitmap); + adapter.notifyItemChanged(adapter.getPosition(data)); + }); + is.close(); + con.disconnect(); + }catch (Exception e){ + e.printStackTrace(); + } + }); friendsDataset.add(data); } @@ -236,6 +271,28 @@ data.setName(user.getName()); data.setId(user.getUid()); + //url作る + requestingIconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg"; + executor.execute(() -> { + try{ + URL url = new URL(requestingIconUrlString); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.connect(); + + InputStream is = con.getInputStream(); + + Bitmap bitmap = BitmapFactory.decodeStream(is); + handler.post(() -> { + data.setIcon(bitmap); + adapter_r.notifyItemChanged(adapter_r.getPosition(data)); + }); + is.close(); + con.disconnect(); + }catch (Exception e){ + e.printStackTrace(); + } + }); + //投稿一つの情報がdataに全部セットされたらDatasetに追加 requestingDataList.add(0, data); } @@ -260,6 +317,10 @@ this.friendData = friendData; } + public int getPosition(FriendDataModel d) { + return friendData.indexOf(d); + } + public void setList(List friendData) { this.friendData = friendData; } @@ -298,6 +359,7 @@ public void onBindViewHolder(@NonNull FriendsViewHolder holder, int position) { // 後からアイコンの登録をできるようにする holder.nameView.setText(friendData.get(position).getName()); + holder.iconView.setImageBitmap(friendData.get(position).getIcon()); if (nemophila.getFavoriteFriends().contains(friendData.get(position).getId())) { holder.favorite.setVisibility(View.VISIBLE); } @@ -333,6 +395,7 @@ public static class FriendDataModel { private String name; private String id; + private Bitmap icon; public String getName() { return name; @@ -340,11 +403,13 @@ public String getId() { return id; } + public Bitmap getIcon() { return icon; } public void setName(String name) { this.name = name; } public void setId(String id) { this.id = id;} + public void setIcon(Bitmap icon){ this.icon = icon; } } // ----------- RequestingのRecyclerView用の内部クラス ------------// @@ -357,6 +422,8 @@ this.list =list; } + public int getPosition(RequestingDataModel d) { return list.indexOf(d); } + public void setList(List list) { this.list = list; } @@ -384,6 +451,7 @@ @Override public void onBindViewHolder(@NonNull FriendActivity.RequestingViewHolder holder, int position) { holder.nameView.setText(list.get(position).getName()); + holder.iconView.setImageBitmap(list.get(position).getIcon()); } @Override @@ -414,6 +482,7 @@ public static class RequestingDataModel { private String name; private String id; + private Bitmap icon; public String getName() { return name; @@ -421,6 +490,7 @@ public String getId() { return id; } + public Bitmap getIcon() { return icon; } public void setName(String name) { this.name = name; @@ -428,6 +498,7 @@ public void setId(String id){ this.id = id; } + public void setIcon(Bitmap icon) { this.icon = icon; } } //ダイアログでOKを押した時に呼び出される フレンド申請を送るメソッド