diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 95b35cb..e58179e 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -12,6 +12,6 @@ - + \ No newline at end of file diff --git a/app/src/main/java/com/example/nemophila/RequestingActivity.java b/app/src/main/java/com/example/nemophila/RequestingActivity.java index 0209578..78a3ec8 100644 --- a/app/src/main/java/com/example/nemophila/RequestingActivity.java +++ b/app/src/main/java/com/example/nemophila/RequestingActivity.java @@ -65,63 +65,64 @@ //フレンド検索ボタン Button requestingButton = (Button)findViewById(R.id.requestingSearchButton); requestingButton.setOnClickListener(new View.OnClickListener(){ + @Override public void onClick(View v){ //入力されたIDを取得 EditText editSearchId = (EditText) findViewById(R.id.inputRequestingId); searchingId = editSearchId.getText().toString(); - - //エラーコードを購読 - friendViewModel.getErrorLiveData().observe(RequestingActivity.this, new Observer() { - @Override - public void onChanged(String error) { - - if (error == ErrorType.ResponseError.getText()) { - new AlertDialog.Builder(RequestingActivity.this) - .setTitle("既にフレンド、申請を受けているなどの理由で申請できません") - .setPositiveButton("OK", null) - .create() - .show(); - } - } - }); - - //取得したIDからアカウントを読み込んでおく + //取得したIDからアカウントを読み込み、検索用LiveDataのonChangeへ accountViewModel.fetchAccount(searchingId); - //検索用LiveDataへの購読 - accountViewModel.getAccountLiveData().observe(RequestingActivity.this, new Observer() { - - //ViewModelからアカウントが返ってくれば(データ変更があれば)実行 - @Override - public void onChanged(Account user) { - - if (user == null) { - new AlertDialog.Builder(RequestingActivity.this) - .setTitle("IDが間違っています") - .setPositiveButton("OK", null) - .create() - .show(); - } else { - requestingName = (user.getName()); - - //申請を送るダイアログ - RequestingDialogFragment dialog = new RequestingDialogFragment(RequestingActivity.this); - //名前を渡す - Bundle args = new Bundle(); - args.putString("message", requestingName); - dialog.setArguments(args); - - //ダイアログの表示 - dialog.show(getSupportFragmentManager(), "Requesting_dialog"); - //OK押したら申請するメソッドにuid、requestingId、tokenを渡す - } - } - }); - - } //onClick終わり - + } }); + //検索用LiveDataへの購読 + accountViewModel.getAccountLiveData().observe(RequestingActivity.this, new Observer() { + + //ViewModelから検索結果が返ってくれば(データ変更があれば)実行 + @Override + public void onChanged(Account user) { + + if (user == null) { + new AlertDialog.Builder(RequestingActivity.this) + .setTitle("IDが間違っています") + .setPositiveButton("OK", null) + .create() + .show(); + } else { + requestingName = (user.getName()); + + //申請を送るダイアログ + RequestingDialogFragment dialog = new RequestingDialogFragment(RequestingActivity.this); + //名前を渡す + Bundle args = new Bundle(); + args.putString("message", requestingName); + dialog.setArguments(args); + + //ダイアログの表示 + dialog.show(getSupportFragmentManager(), "Requesting_dialog"); + //OK押したら申請するメソッドにuid、requestingId、tokenを渡す + } + } + }); + + //FriendViewModelの初期化 + friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); + + //エラーコードを購読 + friendViewModel.getErrorLiveData().observe(RequestingActivity.this, new Observer() { + @Override + public void onChanged(String error) { + + if (error == ErrorType.ResponseError.getText()) { + new AlertDialog.Builder(RequestingActivity.this) + .setTitle("既にフレンド、申請を受けているなどの理由で申請できません") + .setPositiveButton("OK", null) + .create() + .show(); + } + } + }); //RecyclerView(表示の設定、直接表示するところはLivedataを購読しているonChanged内に) List requestingDataList = new ArrayList<>(); @@ -172,13 +173,16 @@ requestingDataList.clear(); //受け取ったLivedataの要素分繰り返し、セット for (AccountNameJson user: requestingUsers) { - //dataを宣言 dataに投稿の必要なデータをセットし、それをpostsDatasetに追加してリストを作る + //申請先1人に必要な情報をセットするdataを宣言 RequestingDataModel data = new RequestingDataModel(); + //dataをpostsDatasetに追加してリストを作る data.setName(user.getName()); data.setId(user.getUid()); - //申請先一つの情報がdataに全部セットされたらDatasetに追加 - requestingDataList.add(0, data); + //申請先一つの情報がdataに全部セットされたらDatasetに追加 重複していたら追加しない + if(!(requestingDataList.contains(data))) { + requestingDataList.add(0, data); + } } //onChange内に書くべき表示部分 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 6a5f9f7..8f3dc95 100644 --- a/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java +++ b/app/src/main/java/com/example/nemophila/viewmodels/FriendViewModel.java @@ -238,7 +238,7 @@ preData.add(anj); } preData.add(createAccountNameJson(uid, name)); - requestedLiveData.setValue(preData); + requestingLiveData.setValue(preData); } private void removeFriendLiveData(String id) {