diff --git a/app/src/main/java/com/example/nemophila/RequestingActivity.java b/app/src/main/java/com/example/nemophila/RequestingActivity.java index 692dd76..3fa12bb 100644 --- a/app/src/main/java/com/example/nemophila/RequestingActivity.java +++ b/app/src/main/java/com/example/nemophila/RequestingActivity.java @@ -1,6 +1,7 @@ package com.example.nemophila; import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; @@ -18,8 +19,10 @@ import android.widget.ImageView; import android.widget.TextView; +import com.example.nemophila.entities.Account; import com.example.nemophila.entities.AccountNameJson; import com.example.nemophila.entities.Post; +import com.example.nemophila.viewmodels.AccountViewModel; import com.example.nemophila.viewmodels.FriendViewModel; import com.example.nemophila.viewmodels.PostsViewModel; @@ -29,14 +32,21 @@ public class RequestingActivity extends AppCompatActivity { + FriendViewModel friendViewModel; + String uid; + String token; + String requestingId; + String searchingId; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_requesting); //Nemophilaから自分のuidとtokenを取得 - String uid = ((Nemophila)getApplication()).getUid(); - String token = ((Nemophila)getApplication()).getToken(); - String requestingId; + uid = ((Nemophila)getApplication()).getUid(); + token = ((Nemophila)getApplication()).getToken(); + String requestingName; + //左上のボタンでマイページへ遷移 Button returnButton = (Button)findViewById(R.id.requestingAcReturnButton); @@ -47,6 +57,9 @@ } }); + //idからアカウント名を検索するためのAccountViewModelを宣言しておく + AccountViewModel accountViewModel = new ViewModelProvider(this).get(AccountViewModel.class); + //フレンド検索ボタン Button requestingButton = (Button)findViewById(R.id.requestingSearchButton); requestingButton.setOnClickListener(new View.OnClickListener(){ @@ -54,17 +67,37 @@ public void onClick(View v){ //入力されたIDを取得 EditText editSearchId = (EditText) findViewById(R.id.inputRequestingId); - String searchingId = editSearchId.getText().toString(); - //取得したIDのユーザー名を受け取り、OKならreqyestingIdに入れる - String requestingName; - //申請を送るダイアログを表示 - RequestingDialogFragment dialog = new RequestingDialogFragment(); - dialog.show(getSupportFragmentManager(), "Requesting_dialog"); - //OK押したら申請するメソッドにuid、requestingId、tokenを渡す + searchingId = editSearchId.getText().toString(); + + //IDが存在しなければ落ちるのでその処理を書く + //取得したIDからアカウントを読み込んでおく + accountViewModel.fetchAccount(searchingId); + //検索用LiveDataへの購読 + accountViewModel.getAccountLiveData().observe(RequestingActivity.this, new Observer() { + + //ViewModelからアカウントが返ってくれば(データ変更があれば)実行 + @Override + public void onChanged(Account user) { + String 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を渡す + } + }); + } }); - //RecyclerView(表示の設定、直接表示するところはLivedataを購読しているonChanged内にしたい) + + //RecyclerView(表示の設定、直接表示するところはLivedataを購読しているonChanged内に) List requestingDataList = new ArrayList<>(); //xmlからrvにRecyclerViewを取得、アダプターを宣言 @@ -81,12 +114,11 @@ rv.setHasFixedSize(true); rv.setLayoutManager(llm); - //ViewModelを宣言し、申請先のデータをロードしておく - FriendViewModel friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); + //FriendViewModelを初期化し、申請先のデータをロードしておく + friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); friendViewModel.getRequesting(uid); //申請先の一覧のLiveDataへの購読 - friendViewModel.getRequestingLiveData().observe(this, new Observer>() { //データに変更があった時実行 @Override @@ -110,27 +142,16 @@ rv.setAdapter(adapter); } }); - - -// //表示テスト用に仮データ -// List testDataSet = new ArrayList<>(); -// for (int i = 0; i < 15; i++) { -// RequestingDataModel data = new RequestingDataModel(); -// data.setName("ネモフィラ太郎"+ i + "号(テスト)"); -// -// testDataSet.add(data); -// } -// //onChange内に書くべき表示部分 -// adapter.setList(testDataSet); -// rv.setAdapter(adapter); - - } + //ダイアログでOKを押した時に呼び出される フレンド申請を送るメソッド + public void putRequesting(){ + requestingId = searchingId; + friendViewModel.putRequesting(uid, requestingId, token); + } //RecyclerViewのための内部クラス - //Adapter public class RequestingAdapter extends RecyclerView.Adapter {