diff --git a/.idea/misc.xml b/.idea/misc.xml
index 81804e1..6bb162c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -14,7 +14,7 @@
-
+
diff --git a/app/src/main/java/com/example/nemophila/FriendActivity.java b/app/src/main/java/com/example/nemophila/FriendActivity.java
index 1f6f9d0..07e82c7 100644
--- a/app/src/main/java/com/example/nemophila/FriendActivity.java
+++ b/app/src/main/java/com/example/nemophila/FriendActivity.java
@@ -50,224 +50,205 @@
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_friend);
- Button showDialog = findViewById(R.id.showDialog);
- showDialog.setOnClickListener(v -> {
- // 任意の大きさでダイアログを生成
- Dialog dialog = new Dialog(this);
- dialog.setContentView(R.layout.layout_friend_dialog);
- dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
+ Button showFriend = findViewById(R.id.showFriend);
+ Button showRequesting = findViewById(R.id.showRequesting);
+ RecyclerView friendRecyclerView = findViewById(R.id.friendsList);
+ ConstraintLayout requestingConstraintLayout = findViewById(R.id.requestingLayout);
- Button showFriend = dialog.findViewById(R.id.showFriend);
- Button showRequesting = dialog.findViewById(R.id.showRequesting);
- RecyclerView friendRecyclerView = dialog.findViewById(R.id.friendsList);
- ConstraintLayout requestingConstraintLayout = dialog.findViewById(R.id.requestingLayout);
+ showFriend.setOnClickListener(v2 -> {
+ friendRecyclerView.setVisibility(View.VISIBLE);
+ requestingConstraintLayout.setVisibility(View.INVISIBLE);
+ });
- showFriend.setOnClickListener(v2 -> {
- friendRecyclerView.setVisibility(View.VISIBLE);
- requestingConstraintLayout.setVisibility(View.INVISIBLE);
- });
+ showRequesting.setOnClickListener(v3 -> {
+ friendRecyclerView.setVisibility(View.INVISIBLE);
+ requestingConstraintLayout.setVisibility(View.VISIBLE);
+ });
- showRequesting.setOnClickListener(v3 -> {
- friendRecyclerView.setVisibility(View.INVISIBLE);
- requestingConstraintLayout.setVisibility(View.VISIBLE);
- });
-
- // 初期化
- List friendsDataset = new ArrayList<>(); // 1行分の情報を持つDataModelを格納するリスト
- RecyclerView rv = dialog.findViewById(R.id.friendsList); // recyclerViewを取得
- friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); // ViewModelを取得
- nemophila = (Nemophila) this.getApplication();
+ // 初期化
+ List friendsDataset = new ArrayList<>(); // 1行分の情報を持つDataModelを格納するリスト
+ RecyclerView rv = findViewById(R.id.friendsList); // recyclerViewを取得
+ friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); // ViewModelを取得
+ nemophila = (Nemophila) this.getApplication();
- //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言
- LinearLayoutManager llm = new LinearLayoutManager(this);
+ //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言
+ LinearLayoutManager llm = new LinearLayoutManager(this);
- // データ1つ1つの区切りが分かるように線を引く
- RecyclerView.ItemDecoration itemDecoration =
- new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
- rv.addItemDecoration(itemDecoration);
- rv.setHasFixedSize(true);
- rv.setLayoutManager(llm);
+ // データ1つ1つの区切りが分かるように線を引く
+ RecyclerView.ItemDecoration itemDecoration =
+ new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
+ rv.addItemDecoration(itemDecoration);
+ rv.setHasFixedSize(true);
+ rv.setLayoutManager(llm);
- uid = nemophila.getUid(); // 自身のidを取得
- token = nemophila.getToken(); // 自身のtokenを取得
- // getFriendsの通信が呼び出されて、フレンドの一覧をfriendsDatasetに格納し、Adapterにセットする
- FriendActivityAdapter adapter = new FriendActivityAdapter(friendsDataset) {
- @Override
- void onDeleteClick(View view, int position, FriendDataModel friend) {
- new AlertDialog.Builder(FriendActivity.this)
- .setTitle("フレンドから" + friend.getName() + "を削除しますか?")
- .setPositiveButton("OK", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- friendViewModel.deleteFriend(uid, friend.getId(), token);
- }
- })
- .setNegativeButton("キャンセル", null)
- .create()
- .show();
- }
-
- @Override
- void onFavoriteClick(View view, int position, FriendDataModel friend, ImageView favorite) {
- if (favorite.getVisibility() == View.INVISIBLE) {
- favorite.setVisibility(View.VISIBLE);
- nemophila.setFavoriteFriends(friend.getId());
- } else {
- favorite.setVisibility(View.INVISIBLE);
- nemophila.removeFavoriteFriends(friend.getId());
- System.out.println(nemophila.getFavoriteFriends());
- }
- }
- };
- friendViewModel.getFriends(uid); // 自身のフレンドの一覧を取得するメソッドを呼び出す
-
- friendViewModel.getFriendsLiveData().observe(this, new Observer>() {
- @Override
- public void onChanged(Collection friends) {
- // 以前のデータが残っていると不都合なので、空にしておく
- friendsDataset.clear();
-
- for (AccountNameJson friend : friends) {
- FriendDataModel data = new FriendDataModel();
- data.setName(friend.getName());
- data.setId(friend.getUid());
- friendsDataset.add(data);
- }
-
- adapter.setList(friendsDataset);
- rv.setAdapter(adapter);
- }
- });
-
- //idからアカウント名を検索するためのAccountViewModelを宣言しておく
- AccountViewModel accountViewModel = new ViewModelProvider(this).get(AccountViewModel.class);
-
- //フレンド検索ボタン
- Button requestingButton = dialog.findViewById(R.id.requestingSearchButton);
- requestingButton.setOnClickListener(new View.OnClickListener(){
- @Override
- public void onClick(View v){
- //入力されたIDを取得
- EditText editSearchId = dialog.findViewById(R.id.inputRequestingId);
- String searchingId = editSearchId.getText().toString();
-
- //IDが存在しなければ落ちるのでその処理を書く
- //取得したIDからアカウントを読み込んでおく
- accountViewModel.fetchAccount(searchingId);
- //検索用LiveDataへの購読
- accountViewModel.getAccountLiveData().observe(FriendActivity.this, new Observer() {
-
- //ViewModelからアカウントが返ってくれば(データ変更があれば)実行
- @Override
- public void onChanged(Account user) {
- if(user == null){
- new AlertDialog.Builder(FriendActivity.this)
- .setTitle("IDが間違っています")
- .setPositiveButton("OK", null)
- .create()
- .show();
- }else {
- requestingName = (user.getName());
-
- //申請を送るダイアログ
- RequestingDialogFragment dialog = new RequestingDialogFragment(FriendActivity.this);
- //名前を渡す
- Bundle args = new Bundle();
- args.putString("message", requestingName);
- dialog.setArguments(args);
-
- //ダイアログの表示
- dialog.show(getSupportFragmentManager(), "Requesting_dialog");
- //OK押したら申請するメソッドにuid、requestingId、tokenを渡す
+ uid = nemophila.getUid(); // 自身のidを取得
+ token = nemophila.getToken(); // 自身のtokenを取得
+ // getFriendsの通信が呼び出されて、フレンドの一覧をfriendsDatasetに格納し、Adapterにセットする
+ FriendActivityAdapter adapter = new FriendActivityAdapter(friendsDataset) {
+ @Override
+ void onDeleteClick(View view, int position, FriendDataModel friend) {
+ new AlertDialog.Builder(FriendActivity.this)
+ .setTitle("フレンドから" + friend.getName() + "を削除しますか?")
+ .setPositiveButton("OK", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ friendViewModel.deleteFriend(uid, friend.getId(), token);
}
+ })
+ .setNegativeButton("キャンセル", null)
+ .create()
+ .show();
+ }
+
+ @Override
+ void onFavoriteClick(View view, int position, FriendDataModel friend, ImageView favorite) {
+ if (favorite.getVisibility() == View.INVISIBLE) {
+ favorite.setVisibility(View.VISIBLE);
+ nemophila.setFavoriteFriends(friend.getId());
+ } else {
+ favorite.setVisibility(View.INVISIBLE);
+ nemophila.removeFavoriteFriends(friend.getId());
+ System.out.println(nemophila.getFavoriteFriends());
+ }
+ }
+ };
+ friendViewModel.getFriends(uid); // 自身のフレンドの一覧を取得するメソッドを呼び出す
+
+ friendViewModel.getFriendsLiveData().observe(this, new Observer>() {
+ @Override
+ public void onChanged(Collection friends) {
+ // 以前のデータが残っていると不都合なので、空にしておく
+ friendsDataset.clear();
+
+ for (AccountNameJson friend : friends) {
+ FriendDataModel data = new FriendDataModel();
+ data.setName(friend.getName());
+ data.setId(friend.getUid());
+ friendsDataset.add(data);
+ }
+
+ adapter.setList(friendsDataset);
+ rv.setAdapter(adapter);
+ }
+ });
+
+ //idからアカウント名を検索するためのAccountViewModelを宣言しておく
+ AccountViewModel accountViewModel = new ViewModelProvider(this).get(AccountViewModel.class);
+
+ //フレンド検索ボタン
+ Button requestingButton = findViewById(R.id.requestingSearchButton);
+ requestingButton.setOnClickListener(new View.OnClickListener(){
+ @Override
+ public void onClick(View v){
+ //入力されたIDを取得
+ EditText editSearchId = findViewById(R.id.inputRequestingId);
+ String searchingId = editSearchId.getText().toString();
+
+ //IDが存在しなければ落ちるのでその処理を書く
+ //取得したIDからアカウントを読み込んでおく
+ accountViewModel.fetchAccount(searchingId);
+ //検索用LiveDataへの購読
+ accountViewModel.getAccountLiveData().observe(FriendActivity.this, new Observer() {
+
+ //ViewModelからアカウントが返ってくれば(データ変更があれば)実行
+ @Override
+ public void onChanged(Account user) {
+ if(user == null){
+ new AlertDialog.Builder(FriendActivity.this)
+ .setTitle("IDが間違っています")
+ .setPositiveButton("OK", null)
+ .create()
+ .show();
+ }else {
+ requestingName = (user.getName());
+
+ //申請を送るダイアログ
+ RequestingDialogFragment dialog = new RequestingDialogFragment(FriendActivity.this);
+ //名前を渡す
+ Bundle args = new Bundle();
+ args.putString("message", requestingName);
+ dialog.setArguments(args);
+
+ //ダイアログの表示
+ dialog.show(getSupportFragmentManager(), "Requesting_dialog");
+ //OK押したら申請するメソッドにuid、requestingId、tokenを渡す
}
- });
- }
-
-
- });
-
-
- //RecyclerView(表示の設定、直接表示するところはLivedataを購読しているonChanged内に)
- List requestingDataList = new ArrayList<>();
-
- //xmlからrvにRecyclerViewを取得
- RecyclerView rv_r = (RecyclerView) dialog.findViewById(R.id.requestingList);
-
- //アダプターを宣言し、削除ボタンを押したときの処理をオーバーライド
- FriendActivity.RequestingAdapter adapter_r = new FriendActivity.RequestingAdapter(requestingDataList){
- @Override
- void onDeleteClick_r(View view, int position, FriendActivity.RequestingDataModel user) {
- new AlertDialog.Builder(FriendActivity.this)
- .setTitle(user.getName() + "さんへの申請を削除しますか?")
- .setPositiveButton("OK", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Toast.makeText(FriendActivity.this, user.getName(), Toast.LENGTH_SHORT).show();
- friendViewModel.deleteRequesting(uid, user.getId(), token);
- }
- })
- .setNegativeButton("キャンセル", null)
- .create()
- .show();
- }
- };
-
- //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言
- LinearLayoutManager llm_r = new LinearLayoutManager(this);
- //データごとの区切り線を入れる
- RecyclerView.ItemDecoration itemDecoration_r =
- new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
- rv_r.addItemDecoration(itemDecoration_r);
-
- 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>() {
- //データに変更があった時実行
- @Override
- public void onChanged(Collection requestingUsers) {
-
- //表示用のDataListを一旦クリアし、LiveDataから受け取ったデータを一つずつセット(重複しないように)
- requestingDataList.clear();
- //受け取ったLivedataの要素分繰り返し、セット
- for (AccountNameJson user: requestingUsers) {
- //dataを宣言 dataに投稿の必要なデータをセットし、それをpostsDatasetに追加してリストを作る
- RequestingActivity.RequestingDataModel data = new RequestingActivity.RequestingDataModel();
- data.setName(user.getName());
- data.setId(user.getUid());
-
- //投稿一つの情報がdataに全部セットされたらDatasetに追加
- requestingDataList.add(data);
}
+ });
+ }
- //onChange内に書くべき表示部分
- adapter_r.setList(requestingDataList);
- rv_r.setAdapter(adapter_r);
+
+ });
+
+
+ //RecyclerView(表示の設定、直接表示するところはLivedataを購読しているonChanged内に)
+ List requestingDataList = new ArrayList<>();
+
+ //xmlからrvにRecyclerViewを取得
+ RecyclerView rv_r = (RecyclerView) findViewById(R.id.requestingList);
+
+ //アダプターを宣言し、削除ボタンを押したときの処理をオーバーライド
+ FriendActivity.RequestingAdapter adapter_r = new FriendActivity.RequestingAdapter(requestingDataList){
+ @Override
+ void onDeleteClick_r(View view, int position, FriendActivity.RequestingDataModel user) {
+ new AlertDialog.Builder(FriendActivity.this)
+ .setTitle(user.getName() + "さんへの申請を削除しますか?")
+ .setPositiveButton("OK", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ Toast.makeText(FriendActivity.this, user.getName(), Toast.LENGTH_SHORT).show();
+ friendViewModel.deleteRequesting(uid, user.getId(), token);
+ }
+ })
+ .setNegativeButton("キャンセル", null)
+ .create()
+ .show();
+ }
+ };
+
+ //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言
+ LinearLayoutManager llm_r = new LinearLayoutManager(this);
+ //データごとの区切り線を入れる
+ RecyclerView.ItemDecoration itemDecoration_r =
+ new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
+ rv_r.addItemDecoration(itemDecoration_r);
+
+ 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>() {
+ //データに変更があった時実行
+ @Override
+ public void onChanged(Collection requestingUsers) {
+
+ //表示用のDataListを一旦クリアし、LiveDataから受け取ったデータを一つずつセット(重複しないように)
+ requestingDataList.clear();
+ //受け取ったLivedataの要素分繰り返し、セット
+ for (AccountNameJson user: requestingUsers) {
+ //dataを宣言 dataに投稿の必要なデータをセットし、それをpostsDatasetに追加してリストを作る
+ RequestingActivity.RequestingDataModel data = new RequestingActivity.RequestingDataModel();
+ data.setName(user.getName());
+ data.setId(user.getUid());
+
+ //投稿一つの情報がdataに全部セットされたらDatasetに追加
+ requestingDataList.add(data);
}
- });
- // ダイアログを閉じる
- Button closeBtn = dialog.findViewById(R.id.close);
- closeBtn.setOnClickListener(d -> dialog.dismiss());
-
- // 生成したダイアログを表示
- dialog.show();
+ //onChange内に書くべき表示部分
+ adapter_r.setList(requestingDataList);
+ rv_r.setAdapter(adapter_r);
+ }
});
- // マイページ画面に画面遷移する
- Button backButton = findViewById(R.id.backMyPage);
- backButton.setOnClickListener(v -> {
- Intent intent = new Intent(getApplication(), MyPageActivity.class);
- startActivity(intent);
- });
-
+ // ダイアログを閉じる
+ Button closeBtn = findViewById(R.id.close);
+ closeBtn.setOnClickListener(d -> finish());
}
// ----------- FriendのRecyclerView用の内部クラス ------------//
diff --git a/app/src/main/java/com/example/nemophila/FriendDialogFragment.java b/app/src/main/java/com/example/nemophila/FriendDialogFragment.java
deleted file mode 100644
index e75076c..0000000
--- a/app/src/main/java/com/example/nemophila/FriendDialogFragment.java
+++ /dev/null
@@ -1,457 +0,0 @@
-package com.example.nemophila;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.example.nemophila.entities.Account;
-import com.example.nemophila.entities.AccountNameJson;
-import com.example.nemophila.viewmodels.AccountViewModel;
-import com.example.nemophila.viewmodels.FriendViewModel;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.constraintlayout.widget.ConstraintLayout;
-import androidx.fragment.app.DialogFragment;
-import androidx.lifecycle.Observer;
-import androidx.lifecycle.ViewModelProvider;
-import androidx.recyclerview.widget.DividerItemDecoration;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-public class FriendDialogFragment extends DialogFragment {
- Nemophila nemophila;
- FriendViewModel friendViewModel;
- String uid;
- String token;
- String requestingId;
- String requestingName;
- String searchingId;
-
- public FriendDialogFragment(Nemophila nemophila) {
- this.nemophila = nemophila;
- }
-
- @NonNull
- @Override
- public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
- Dialog dialog = new Dialog(getContext());
- dialog.setContentView(R.layout.layout_friend_dialog);
- dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
-
- Button showFriend = dialog.findViewById(R.id.showFriend);
- Button showRequesting = dialog.findViewById(R.id.showRequesting);
- RecyclerView friendRecyclerView = dialog.findViewById(R.id.friendsList);
- ConstraintLayout requestingConstraintLayout = dialog.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 = dialog.findViewById(R.id.friendsList); // recyclerViewを取得
- friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); // ViewModelを取得
-
- //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言
- LinearLayoutManager llm = new LinearLayoutManager(getContext());
-
- // データ1つ1つの区切りが分かるように線を引く
- RecyclerView.ItemDecoration itemDecoration =
- new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL);
- rv.addItemDecoration(itemDecoration);
- rv.setHasFixedSize(true);
- rv.setLayoutManager(llm);
-
- uid = nemophila.getUid(); // 自身のidを取得
- token = nemophila.getToken(); // 自身のtokenを取得
- // getFriendsの通信が呼び出されて、フレンドの一覧をfriendsDatasetに格納し、Adapterにセットする
- FriendActivityAdapter adapter = new FriendActivityAdapter(friendsDataset) {
- @Override
- void onDeleteClick(View view, int position, FriendActivity.FriendDataModel friend) {
- new AlertDialog.Builder(getContext())
- .setTitle("フレンドから" + friend.getName() + "を削除しますか?")
- .setPositiveButton("OK", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- friendViewModel.deleteFriend(uid, friend.getId(), token);
- }
- })
- .setNegativeButton("キャンセル", null)
- .create()
- .show();
- }
-
- @Override
- void onFavoriteClick(View view, int position, FriendActivity.FriendDataModel friend, ImageView favorite) {
- if (favorite.getVisibility() == View.INVISIBLE) {
- favorite.setVisibility(View.VISIBLE);
- nemophila.setFavoriteFriends(friend.getId());
- } else {
- favorite.setVisibility(View.INVISIBLE);
- nemophila.removeFavoriteFriends(friend.getId());
- System.out.println(nemophila.getFavoriteFriends());
- }
- }
- };
- friendViewModel.getFriends(uid); // 自身のフレンドの一覧を取得するメソッドを呼び出す
-
- friendViewModel.getFriendsLiveData().observe(this, new Observer>() {
- @Override
- public void onChanged(Collection friends) {
- // 以前のデータが残っていると不都合なので、空にしておく
- friendsDataset.clear();
-
- for (AccountNameJson friend : friends) {
- FriendActivity.FriendDataModel data = new FriendActivity.FriendDataModel();
- data.setName(friend.getName());
- data.setId(friend.getUid());
- friendsDataset.add(data);
- }
-
- adapter.setList(friendsDataset);
- rv.setAdapter(adapter);
- }
- });
-
- //idからアカウント名を検索するためのAccountViewModelを宣言しておく
- AccountViewModel accountViewModel = new ViewModelProvider(this).get(AccountViewModel.class);
-
- //フレンド検索ボタン
- Button requestingButton = dialog.findViewById(R.id.requestingSearchButton);
- requestingButton.setOnClickListener(new View.OnClickListener(){
- @Override
- public void onClick(View v){
- //入力されたIDを取得
- EditText editSearchId = dialog.findViewById(R.id.inputRequestingId);
- String searchingId = editSearchId.getText().toString();
-
- //IDが存在しなければ落ちるのでその処理を書く
- //取得したIDからアカウントを読み込んでおく
- accountViewModel.fetchAccount(searchingId);
- //検索用LiveDataへの購読
- accountViewModel.getAccountLiveData().observe(, new Observer() {
-
- //ViewModelからアカウントが返ってくれば(データ変更があれば)実行
- @Override
- public void onChanged(Account user) {
- if(user == null){
- new AlertDialog.Builder(getContext())
- .setTitle("IDが間違っています")
- .setPositiveButton("OK", null)
- .create()
- .show();
- }else {
- requestingName = (user.getName());
-
- new AlertDialog.Builder(getContext())
- .setTitle("フレンド申請")
- .setMessage(requestingName + "さんに申請しますか?")
- .setPositiveButton("申請を送る", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int id) {
- // ボタンを押した時にフレンド申請を送る
- friendViewModel.putRequesting(uid, searchingId, requestingName, token);
- }
- })
- .setNegativeButton("キャンセル", null)
- .create()
- .show();
-
-// //申請を送るダイアログ
-// RequestingDialogFragment dialog = new RequestingDialogFragment();
-// //名前を渡す
-// Bundle args = new Bundle();
-// args.putString("message", requestingName);
-// dialog.setArguments(args);
-//
-// //ダイアログの表示
-// dialog.show(getSupportFragmentManager(), "Requesting_dialog");
-// //OK押したら申請するメソッドにuid、requestingId、tokenを渡す
- }
- }
- });
- }
-
-
- });
-
-
- //RecyclerView(表示の設定、直接表示するところはLivedataを購読しているonChanged内に)
- List requestingDataList = new ArrayList<>();
-
- //xmlからrvにRecyclerViewを取得
- RecyclerView rv_r = (RecyclerView) dialog.findViewById(R.id.requestingList);
-
- //アダプターを宣言し、削除ボタンを押したときの処理をオーバーライド
- FriendActivity.RequestingAdapter adapter_r = new FriendActivity.RequestingAdapter(requestingDataList){
- @Override
- void onDeleteClick_r(View view, int position, FriendActivity.RequestingDataModel user) {
- new AlertDialog.Builder(FriendActivity.this)
- .setTitle(user.getName() + "さんへの申請を削除しますか?")
- .setPositiveButton("OK", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Toast.makeText(FriendActivity.this, user.getName(), Toast.LENGTH_SHORT).show();
- friendViewModel.deleteRequesting(uid, user.getId(), token);
- }
- })
- .setNegativeButton("キャンセル", null)
- .create()
- .show();
- }
- };
-
- //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言
- LinearLayoutManager llm_r = new LinearLayoutManager(this);
- //データごとの区切り線を入れる
- RecyclerView.ItemDecoration itemDecoration_r =
- new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
- rv_r.addItemDecoration(itemDecoration_r);
-
- 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>() {
- //データに変更があった時実行
- @Override
- public void onChanged(Collection requestingUsers) {
-
- //表示用のDataListを一旦クリアし、LiveDataから受け取ったデータを一つずつセット(重複しないように)
- requestingDataList.clear();
- //受け取ったLivedataの要素分繰り返し、セット
- for (AccountNameJson user: requestingUsers) {
- //dataを宣言 dataに投稿の必要なデータをセットし、それをpostsDatasetに追加してリストを作る
- RequestingActivity.RequestingDataModel data = new RequestingActivity.RequestingDataModel();
- data.setName(user.getName());
- data.setId(user.getUid());
-
- //投稿一つの情報がdataに全部セットされたらDatasetに追加
- requestingDataList.add(data);
- }
-
- //onChange内に書くべき表示部分
- adapter_r.setList(requestingDataList);
- rv_r.setAdapter(adapter_r);
- }
- });
-
- // ダイアログを閉じる
- Button closeBtn = dialog.findViewById(R.id.close);
- closeBtn.setOnClickListener(d -> dialog.dismiss());
-
- return dialog;
- }
-
- // ----------- FriendのRecyclerView用の内部クラス ------------//
- // Adapter
- abstract public class FriendActivityAdapter extends RecyclerView.Adapter {
- private List friendData;
-
- public FriendActivityAdapter(List friendData) {
- this.friendData = friendData;
- }
-
- public void setList(List friendData) {
- this.friendData = friendData;
- }
-
- @NonNull
- @Override
- public FriendActivity.FriendsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int ViewType) {
- // layoutXMLからViewを生成
- View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.friend_list_item, parent,false);
- // ViewHolderを生成
- FriendActivity.FriendsViewHolder vh = new FriendActivity.FriendsViewHolder(inflate);
-
- // 削除ボタンを押したときのイベントを登録
- vh.deleteButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- int position = vh.getBindingAdapterPosition();
- // 処理はonDeleteClick()に丸投げ
- onDeleteClick(v, position, friendData.get(position));
- }
- });
-
- // お気に入りに追加したときのイベントを登録
- vh.favoriteOutline.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- int position = vh.getBindingAdapterPosition();
- // 処理はonFavoriteClick()に丸投げ
- onFavoriteClick(v, position, friendData.get(position), vh.favorite);
- }
- });
-
- return vh;
- }
-
- @Override
- public void onBindViewHolder(@NonNull FriendActivity.FriendsViewHolder holder, int position) {
- // 後からアイコンの登録をできるようにする
- holder.nameView.setText(friendData.get(position).getName());
- if (nemophila.getFavoriteFriends().contains(friendData.get(position).getId())) {
- holder.favorite.setVisibility(View.VISIBLE);
- }
- }
-
- @Override
- public int getItemCount() {
- return friendData.size();
- }
-
- abstract void onDeleteClick(View view, int position, FriendActivity.FriendDataModel friend);
- abstract void onFavoriteClick(View view, int position, FriendActivity.FriendDataModel friend, ImageView favorite);
- }
-
- // ViewHolder
- public class FriendsViewHolder extends RecyclerView.ViewHolder {
- public ImageView favorite;
- public ImageButton favoriteOutline;
- public ImageView iconView;
- public TextView nameView;
- public Button deleteButton;
-
- public FriendsViewHolder(@NonNull View itemView) {
- super(itemView);
- favorite = itemView.findViewById(R.id.favorite);
- favoriteOutline = itemView.findViewById(R.id.favorite_outline);
- iconView = itemView.findViewById(R.id.friendIcon);
- nameView = itemView.findViewById(R.id.friendName);
- deleteButton = itemView.findViewById(R.id.friendDelete);
- }
- }
-
- // DataModel
- public static class FriendDataModel {
- private String name;
- private String id;
-
- public String getName() {
- return name;
- }
- public String getId() {
- return id;
- }
-
- public void setName(String name) {
- this.name = name;
- }
- public void setId(String id) { this.id = id;}
- }
-
- // ----------- RequestingのRecyclerView用の内部クラス ------------//
- //Adapter
- public class RequestingAdapter extends RecyclerView.Adapter {
-
- private List list;
-
- public RequestingAdapter(List list) {
- this.list =list;
- }
-
- public void setList(List list) {
- this.list = list;
- }
-
- @NonNull
- @Override
- public FriendActivity.RequestingViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
- //1データあたりのレイアウトを読み込み、ビューホルダーを宣言
- View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_requesting_activity, parent,false);
- FriendActivity.RequestingViewHolder vh = new FriendActivity.RequestingViewHolder(inflate);
-
- // リスト内の削除ボタンを押した時の処理
- vh.deleteButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- int position = vh.getBindingAdapterPosition();
- // 処理はonDeleteClickに
- onDeleteClick_r(v, position, list.get(position));
- }
- });
-
- return vh;
- }
-
- @Override
- public void onBindViewHolder(@NonNull FriendActivity.RequestingViewHolder holder, int position) {
- holder.nameView.setText(list.get(position).getName());
- }
-
- @Override
- public int getItemCount() {
- return list.size();
- }
-
- void onDeleteClick_r(View view, int position, FriendActivity.RequestingDataModel requesting) {
- // このメソッドをActivity内でオーバーライドして、クリックイベントの処理を設定する
- }
- }
-
- //ViewHolder
- public class RequestingViewHolder extends RecyclerView.ViewHolder {
- public TextView nameView;
- public ImageView iconView;
- public Button deleteButton;
-
- public RequestingViewHolder(@NonNull View itemView) {
- super(itemView);
- nameView = (TextView) itemView.findViewById(R.id.requestingName);
- iconView = itemView.findViewById(R.id.requestingIcon);
- deleteButton = itemView.findViewById(R.id.requestingDeleteButton);
- }
- }
-
- //DataModel
- public static class RequestingDataModel {
- private String name;
- private String id;
-
- public String getName() {
- return name;
- }
- public String getId() {
- return id;
- }
-
- public void setName(String name) {
- this.name = name;
- }
- public void setId(String id){
- this.id = id;
- }
- }
-
- //ダイアログでOKを押した時に呼び出される フレンド申請を送るメソッド
- public void putRequesting(){
- requestingId = searchingId;
- friendViewModel.putRequesting(uid, requestingId, requestingName, token);
- }
-}
diff --git a/app/src/main/java/com/example/nemophila/MyPageActivity.java b/app/src/main/java/com/example/nemophila/MyPageActivity.java
index b67e074..f90011a 100644
--- a/app/src/main/java/com/example/nemophila/MyPageActivity.java
+++ b/app/src/main/java/com/example/nemophila/MyPageActivity.java
@@ -56,8 +56,8 @@
Button friendButton = (Button) findViewById(R.id.friend);
friendButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
- FriendDialogFragment dialog = new FriendDialogFragment(nemophila);
- dialog.show(getSupportFragmentManager(), "tag");
+ Intent intent = new Intent(MyPageActivity.this, FriendActivity.class);
+ startActivity(intent);
}
});
diff --git a/app/src/main/res/layout/activity_friend.xml b/app/src/main/res/layout/activity_friend.xml
index c8ed16a..9eb30db 100644
--- a/app/src/main/res/layout/activity_friend.xml
+++ b/app/src/main/res/layout/activity_friend.xml
@@ -1,59 +1,137 @@
+ android:layout_weight="0.1"
+ android:orientation="horizontal">
+
+
-
-
-
-
+ android:layout_weight="0.48"
+ android:backgroundTint="#CFD8DC"/>
+ android:layout_height="match_parent"
+ android:layout_weight="0.48"
+ android:backgroundTint="#CFD8DC"/>
-
+ android:layout_weight="0.02"/>
-
+ android:layout_weight="0.8">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/layout_friend_dialog.xml b/app/src/main/res/layout/layout_friend_dialog.xml
deleted file mode 100644
index 7c7ac15..0000000
--- a/app/src/main/res/layout/layout_friend_dialog.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file