diff --git a/.idea/compiler.xml b/.idea/compiler.xml index b589d56..b86273d 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index b268ef3..a207691 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,6 +4,14 @@ diff --git a/.idea/misc.xml b/.idea/misc.xml index 8978d23..74dd639 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,7 @@ + - + 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..cb52bac 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 @@ -36,6 +36,10 @@ private Tampopo tampopo; + // RecyclerView とそのアダプターをフィールドとして保持しておく + private RecyclerView recyclerView; + private MyFriendRequestRecyclerViewAdapter adapter; + /** * Mandatory empty constructor for the fragment manager to instantiate the * fragment (e.g. upon screen orientation changes). @@ -81,13 +85,20 @@ // Set the adapter if (view instanceof RecyclerView) { Context context = view.getContext(); - RecyclerView recyclerView = (RecyclerView) view; + recyclerView = (RecyclerView) view; + if (mColumnCount <= 1) { recyclerView.setLayoutManager(new LinearLayoutManager(context)); } else { recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount)); } - recyclerView.setAdapter(new MyFriendRequestRecyclerViewAdapter(FriendRequestContent.ITEMS, friendViewModel, receiverId, token)); + + // 画面を開くたびに、いったんリストを空にしてから最新データを入れるようにする + FriendRequestContent.ITEMS.clear(); + FriendRequestContent.ITEM_MAP.clear(); + + adapter = new MyFriendRequestRecyclerViewAdapter(FriendRequestContent.ITEMS, friendViewModel, receiverId, token); + recyclerView.setAdapter(adapter); } return view; } @@ -102,9 +113,17 @@ // LiveData に変更があったとき(新しい友達リクエストのリストが届いたとき)に呼ばれるメソッド @Override public void onChanged(List friendRequests) { + // LiveData に新しいリストが来たら、表示用リストを作り直してアダプターに更新を通知 + FriendRequestContent.ITEMS.clear(); + FriendRequestContent.ITEM_MAP.clear(); + for (FriendRequest f: friendRequests) { FriendRequestContent.addItem(new FriendRequestContent.FriendRequestItem(f.getSenderId(), "ユーザー名")); } + + if (adapter != null) { + adapter.notifyDataSetChanged(); + } } }); }