diff --git a/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java b/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java index 72f9525..7a995de 100644 --- a/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java +++ b/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java @@ -15,8 +15,11 @@ import android.view.ViewGroup; import com.example.tampopo_client.R; +import com.example.tampopo_client.Tampopo; import com.example.tampopo_client.models.FriendRequest; +import com.example.tampopo_client.viewmodels.FriendSentRequestViewModel; import com.example.tampopo_client.views.placeholder.FriendRequestContent; +import com.example.tampopo_client.viewmodels.FriendViewModel; import com.example.tampopo_client.viewmodels.FriendReceivedRequestViewModel; import java.util.List; @@ -62,6 +65,12 @@ Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_friend_received_list, container, false); + FriendViewModel friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); + FriendReceivedRequestViewModel friendReceivedRequestViewModel = new ViewModelProvider(this).get(FriendReceivedRequestViewModel.class); + Tampopo tampopo = (Tampopo) this.getView().getApplicationWindowToken(); + String receiverId = tampopo.getUserId(); + String token = tampopo.getToken(); + // Add some sample items. // for (int i = 1; i <= 30; i++) // FriendRequestContent.addItem(new FriendRequestContent.FriendRequestItem(Integer.toString(i), "ユーザ名" + i)); @@ -75,7 +84,7 @@ } else { recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount)); } - recyclerView.setAdapter(new MyFriendRequestRecyclerViewAdapter(FriendRequestContent.ITEMS)); + recyclerView.setAdapter(new MyFriendRequestRecyclerViewAdapter(FriendRequestContent.ITEMS, friendReceivedRequestViewModel, receiverId, token)); } return view; } diff --git a/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java b/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java index 7df07fc..d04e9d9 100644 --- a/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java +++ b/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java @@ -3,59 +3,92 @@ import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import com.example.tampopo_client.viewmodels.FriendReceivedRequestViewModel; +import com.example.tampopo_client.viewmodels.FriendViewModel; import com.example.tampopo_client.views.placeholder.FriendRequestContent.FriendRequestItem; import com.example.tampopo_client.databinding.FragmentFriendReceivedBinding; +import android.widget.Toast; import java.util.List; -/** - * {@link RecyclerView.Adapter} that can display a {@link FriendRequestItem}. - * TODO: Replace the implementation with code for your data type. - */ + +// このクラスは RecyclerView.Adapter を継承していて、FriendRequestItem を表示するアダプター public class MyFriendRequestRecyclerViewAdapter extends RecyclerView.Adapter { + // 表示するFriendRequestItemのリスト(アダプターのデータ) private final List mValues; + private String receiverId; + private String token; - public MyFriendRequestRecyclerViewAdapter(List items) { + // コンストラクタ:アダプターを初期化し、表示データのリストを受け取る + public MyFriendRequestRecyclerViewAdapter(List items, FriendReceivedRequestViewModel friendReceivedRequestViewModel, String receiverId, String token) { mValues = items; } + // ビュー(行)を新しく作成するときに呼ばれる(レイアウトのXMLを元に1行分のViewを作成) @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - + // fragment_friend_received.xml を元に View を生成して ViewHolder に渡す return new ViewHolder(FragmentFriendReceivedBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); - } + // 表示するデータを、対応するViewHolderのUI部品にセットする(スクロール時など) + // onBindViewHolder:表示するアイテムの「中身」を設定する処理を書くところ @Override public void onBindViewHolder(final ViewHolder holder, int position) { + // 現在の位置の FriendRequestItem を取得して ViewHolder に保持させる holder.mItem = mValues.get(position); - //holder.mIdView.setText(mValues.get(position).id); + // 名前(name)を TextView に表示する holder.mContentView.setText(mValues.get(position).name); + + // 「許可」ボタンを押した時の処理 + holder.allowButton.setOnClickListener(v -> { + // フレンド許可APIを叩く + String senderId = holder.mItem.id; // または holder.mItem.senderId + + // 例:ViewModelにフレンド登録処理を依頼する + FriendViewModel.createFriend(senderId, receiverId, token); + + Toast.makeText(v.getContext(), "フレンド申請を許可しました", Toast.LENGTH_SHORT).show(); + }); + } + // リスト全体のアイテム数を返す(RecyclerViewに何個表示するかを教える) @Override public int getItemCount() { return mValues.size(); } + // 各行(View)を保持するための ViewHolder クラス public class ViewHolder extends RecyclerView.ViewHolder { - //public final TextView mIdView; + // TextView:表示される友達の名前 public final TextView mContentView; + // 表示する1つのFriendRequestItemを保持 public FriendRequestItem mItem; + public View allowButton; + // ViewHolderのコンストラクタ:バインディングされたViewを使ってUI部品にアクセスする public ViewHolder(FragmentFriendReceivedBinding binding) { + // 親クラスのコンストラクタに、View全体を渡す super(binding.getRoot()); - //mIdView = binding.itemNumber; + // fragment_friend_received.xml 内の TextView(contentというid)に対応する変数をセット mContentView = binding.content; + allowButton = binding.AllowButton; + } + // デバッグやログ出力用に、表示中のテキストを返す @Override public String toString() { return super.toString() + " '" + mContentView.getText() + "'"; } + + public void onAccept(String id) { + } } } \ No newline at end of file