diff --git a/app/src/main/java/com/example/tampopo_client/models/FriendRequest.java b/app/src/main/java/com/example/tampopo_client/models/FriendRequest.java index 939f0b7..654e585 100644 --- a/app/src/main/java/com/example/tampopo_client/models/FriendRequest.java +++ b/app/src/main/java/com/example/tampopo_client/models/FriendRequest.java @@ -10,6 +10,10 @@ this.receiverId = receiverId; } + public FriendRequest() { + + } + public Integer getId() { return id; } diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java index 2542cc1..0b01c76 100644 --- a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java @@ -6,6 +6,7 @@ import com.example.tampopo_client.models.FriendRequest; import com.example.tampopo_client.resources.FriendRequestsResource; +import java.util.ArrayList; import java.util.List; import retrofit2.Call; @@ -33,7 +34,7 @@ .addConverterFactory(JacksonConverterFactory.create()) .build(); this.friendRequestsResource = retrofit.create(FriendRequestsResource.class); - this.receivedRequests = new MutableLiveData<>(); + this.receivedRequests = new MutableLiveData<>(new ArrayList<>()); this.operationResult = new MutableLiveData<>(); } 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 b5a8976..58dbaf8 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 @@ -22,6 +22,7 @@ import com.example.tampopo_client.viewmodels.FriendViewModel; import com.example.tampopo_client.viewmodels.FriendReceivedRequestViewModel; +import java.util.ArrayList; import java.util.List; /** @@ -35,6 +36,7 @@ private int mColumnCount = 1; private Tampopo tampopo; + private MyFriendRequestRecyclerViewAdapter adapter; /** * Mandatory empty constructor for the fragment manager to instantiate the @@ -87,7 +89,8 @@ } else { recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount)); } - recyclerView.setAdapter(new MyFriendRequestRecyclerViewAdapter(FriendRequestContent.ITEMS, friendViewModel, receiverId, token)); + adapter = new MyFriendRequestRecyclerViewAdapter(new ArrayList<>(), friendViewModel, receiverId, token); + recyclerView.setAdapter(adapter); } return view; } @@ -102,8 +105,9 @@ // LiveData に変更があったとき(新しい友達リクエストのリストが届いたとき)に呼ばれるメソッド @Override public void onChanged(List friendRequests) { - for (FriendRequest f: friendRequests) { - FriendRequestContent.addItem(new FriendRequestContent.FriendRequestItem(f.getSenderId(), "ユーザー名")); + if(adapter != null) { + adapter.setItems(friendRequests); + adapter.notifyDataSetChanged(); } } }); 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 4b7c836..eeff46e 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 @@ -7,12 +7,14 @@ import android.view.ViewGroup; import android.widget.TextView; +import com.example.tampopo_client.models.FriendRequest; 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.ArrayList; import java.util.List; @@ -20,21 +22,26 @@ public class MyFriendRequestRecyclerViewAdapter extends RecyclerView.Adapter { // 表示するFriendRequestItemのリスト(アダプターのデータ) - private final List mValues; + private final List items; private FriendViewModel friendViewModel; private String receiverId; private String token; // コンストラクタ:アダプターを初期化し、表示データのリストを受け取る - public MyFriendRequestRecyclerViewAdapter(List items, FriendViewModel friendViewModel, String receiverId, String token) { - mValues = items; + public MyFriendRequestRecyclerViewAdapter(List items, FriendViewModel friendViewModel, String receiverId, String token) { + this.items = new ArrayList<>(items); this.friendViewModel = friendViewModel; this.receiverId = receiverId; this.token = token; } + public void setItems(List newItems) { + items.clear(); + items.addAll(newItems); + } + // ビュー(行)を新しく作成するときに呼ばれる(レイアウトのXMLを元に1行分のViewを作成) @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { @@ -47,14 +54,14 @@ @Override public void onBindViewHolder(final ViewHolder holder, int position) { // 現在の位置の FriendRequestItem を取得して ViewHolder に保持させる - holder.mItem = mValues.get(position); + holder.mItem = items.get(position); // 名前(name)を TextView に表示する - holder.mContentView.setText(mValues.get(position).name); + holder.mContentView.setText(items.get(position).getSenderId()); // 「許可」ボタンを押した時の処理 holder.allowButton.setOnClickListener(v -> { // フレンド許可APIを叩く - String senderId = holder.mItem.id; // または holder.mItem.senderId + String senderId = holder.mItem.getId().toString(); // または holder.mItem.senderId // 例:ViewModelにフレンド登録処理を依頼する friendViewModel.createFriend(token, senderId, receiverId); @@ -67,7 +74,7 @@ // リスト全体のアイテム数を返す(RecyclerViewに何個表示するかを教える) @Override public int getItemCount() { - return mValues.size(); + return items.size(); } // 各行(View)を保持するための ViewHolder クラス @@ -75,7 +82,7 @@ // TextView:表示される友達の名前 public final TextView mContentView; // 表示する1つのFriendRequestItemを保持 - public FriendRequestItem mItem; + public FriendRequest mItem; public View allowButton; // ViewHolderのコンストラクタ:バインディングされたViewを使ってUI部品にアクセスする