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..ffd1b1c 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,11 +69,11 @@
RecyclerView friendRecyclerView = findViewById(R.id.friendsList);
LinearLayout requestingConstraintLayout = findViewById(R.id.requestingLayout);
+ // フレンド一覧と申請先一覧の画面切り替え
showFriend.setOnClickListener(v2 -> {
friendRecyclerView.setVisibility(View.VISIBLE);
requestingConstraintLayout.setVisibility(View.INVISIBLE);
});
-
showRequesting.setOnClickListener(v3 -> {
friendRecyclerView.setVisibility(View.INVISIBLE);
requestingConstraintLayout.setVisibility(View.VISIBLE);
@@ -71,7 +84,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 +97,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 +138,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);
}
@@ -181,7 +215,6 @@
}
});
-
//RecyclerView(表示の設定、直接表示するところはLivedataを購読しているonChanged内に)
List requestingDataList = new ArrayList<>();
@@ -236,6 +269,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 +315,10 @@
this.friendData = friendData;
}
+ public int getPosition(FriendDataModel d) {
+ return friendData.indexOf(d);
+ }
+
public void setList(List friendData) {
this.friendData = friendData;
}
@@ -298,6 +357,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 +393,7 @@
public static class FriendDataModel {
private String name;
private String id;
+ private Bitmap icon;
public String getName() {
return name;
@@ -340,11 +401,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 +420,8 @@
this.list =list;
}
+ public int getPosition(RequestingDataModel d) { return list.indexOf(d); }
+
public void setList(List list) {
this.list = list;
}
@@ -384,6 +449,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 +480,7 @@
public static class RequestingDataModel {
private String name;
private String id;
+ private Bitmap icon;
public String getName() {
return name;
@@ -421,6 +488,7 @@
public String getId() {
return id;
}
+ public Bitmap getIcon() { return icon; }
public void setName(String name) {
this.name = name;
@@ -428,6 +496,7 @@
public void setId(String id){
this.id = id;
}
+ public void setIcon(Bitmap icon) { this.icon = icon; }
}
//ダイアログでOKを押した時に呼び出される フレンド申請を送るメソッド