diff --git a/app/src/main/java/com/example/nemophila/FriendActivity.java b/app/src/main/java/com/example/nemophila/FriendActivity.java index ffd1b1c..5852875 100644 --- a/app/src/main/java/com/example/nemophila/FriendActivity.java +++ b/app/src/main/java/com/example/nemophila/FriendActivity.java @@ -42,6 +42,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -69,16 +70,6 @@ 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); - }); - // 初期化 List friendsDataset = new ArrayList<>(); // 1行分の情報を持つDataModelを格納するリスト RecyclerView rv = findViewById(R.id.friendsList); // recyclerViewを取得 @@ -250,10 +241,6 @@ rv_r.setHasFixedSize(true); rv_r.setLayoutManager(llm_r); - //FriendViewModelを初期化し、申請先のデータをロードしておく - friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); - friendViewModel.getRequesting(uid); - //申請先の一覧のLiveDataへの購読 friendViewModel.getRequestingLiveData().observe(this, new Observer>() { //データに変更があった時実行 @@ -301,7 +288,19 @@ } }); - // ダイアログを閉じる + // フレンド一覧と申請先一覧の画面切り替え + showFriend.setOnClickListener(v2 -> { + friendRecyclerView.setVisibility(View.VISIBLE); + requestingConstraintLayout.setVisibility(View.INVISIBLE); + friendViewModel.getFriends(uid); + }); + showRequesting.setOnClickListener(v3 -> { + friendRecyclerView.setVisibility(View.INVISIBLE); + requestingConstraintLayout.setVisibility(View.VISIBLE); + friendViewModel.getRequesting(uid); + }); + + // MyPageActivityに戻る Button closeBtn = findViewById(R.id.close); closeBtn.setOnClickListener(d -> finish()); } diff --git a/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java b/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java index 2df8fc1..f34bc89 100644 --- a/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java +++ b/app/src/main/java/com/example/nemophila/entities/AccountNameJson.java @@ -19,4 +19,16 @@ public void setUid(String uid) { this.uid = uid; } + + @Override + public boolean equals(Object o) { + if (!(o instanceof AccountNameJson)) { + return false; + } + AccountNameJson anj = (AccountNameJson) o; + if (!this.uid.equals(anj.uid)) { + return false; + } + return true; + } } diff --git a/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java index 0f5e67a..69a5f94 100644 --- a/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java +++ b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java @@ -20,6 +20,7 @@ // フィールド private final Retrofit retrofit; private final FriendsRest friendsRest; + // ライブデータ private final MutableLiveData> friendsLiveData; private final MutableLiveData> requestedLiveData; @@ -52,15 +53,17 @@ } -//フレンドの情報の取得 + //フレンドの情報の取得 public void getFriends(String uid) { Call> call = friendsRest.getFriends(uid); call.enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { if (response.isSuccessful()) { - System.out.println("Successful"); - friendsLiveData.setValue(response.body()); + if (response.body() != null) { + System.out.println("Successful"); + friendsLiveData.setValue(response.body()); + } } else { System.out.println("ResponseError: " + response.code()); errorLiveData.setValue(parseStatusCode(response.code())); @@ -74,6 +77,7 @@ }); } + // フレンドを追加 public void putFriend(String uid, String fid, String name, String token) { Call call = friendsRest.putFriend(uid,fid,token); call.enqueue(new Callback() { @@ -94,6 +98,7 @@ } }); } + // 対象のアカウントのフレンド登録情報の削除 public void deleteFriend(String uid,String fid, String token) { Call call = friendsRest.deleteFriend(uid,fid,token); @@ -115,6 +120,7 @@ } }); } + //フレンド申請を行うときの情報の取得 public void getRequesting(String uid) { Call> call = friendsRest.getRequesting(uid); @@ -122,8 +128,10 @@ @Override public void onResponse(Call> call, Response> response) { if (response.isSuccessful()) { - requestingLiveData.setValue(response.body()); - System.out.println("Successful"); + if (response.body() != null) { + System.out.println("Successful"); + requestingLiveData.setValue(response.body()); + } } else { System.out.println("ResponseError: " + response.code()); errorLiveData.setValue(parseStatusCode(response.code())); @@ -137,14 +145,15 @@ }); } - public void putRequesting(String uid, String requesting_id, String name, String token) { - Call call = friendsRest.putRequesting(uid,requesting_id,token); + // フレンド申請を送信 + public void putRequesting(String uid, String requestingId, String requestingName, String token) { + Call call = friendsRest.putRequesting(uid,requestingId,token); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { System.out.println("Successful"); - addRequestingLiveData(requesting_id, name); + addRequestingLiveData(requestingId, requestingName); } else { System.out.println("ResponseError: " + response.code()); errorLiveData.setValue(parseStatusCode(response.code())); @@ -157,14 +166,15 @@ } }); } + // 対象のアカウントのフレンド申請を行うときの情報削除 - public void deleteRequesting(String uid,String requesting_id, String token) { - Call call = friendsRest.deleteRequesting(uid, requesting_id, token); + public void deleteRequesting(String uid,String requestingId, String token) { + Call call = friendsRest.deleteRequesting(uid, requestingId, token); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { - removeRequestingLiveData(requesting_id); + removeRequestingLiveData(requestingId); System.out.println("Successful Delete"); } else { System.out.println("ResponseError: " + response.code()); @@ -178,6 +188,7 @@ } }); } + //フレンド申請を行われたときの情報の取得 public void getRequested(String uid) { Call> call = friendsRest.getRequested(uid); @@ -200,6 +211,7 @@ } }); } + // 対象のアカウントのフレンド申請を行われたときの情報削除 public void deleteRequested(String uid,String fid, String token) { Call call = friendsRest.deleteRequested(uid,fid,token); diff --git a/app/src/main/res/layout/activity_friend.xml b/app/src/main/res/layout/activity_friend.xml index e22a6fe..17a0180 100644 --- a/app/src/main/res/layout/activity_friend.xml +++ b/app/src/main/res/layout/activity_friend.xml @@ -43,6 +43,13 @@ android:layout_weight="0.02"/> + +