diff --git a/app/src/main/java/com/example/tampopo_client/views/MainActivity.java b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java index 914449a..983097b 100644 --- a/app/src/main/java/com/example/tampopo_client/views/MainActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java @@ -312,7 +312,7 @@ FriendIconView userView = userViews.get(friendId); MutableLiveData> activitiesLiveData = activityViewModel.getActivitiesLiveDataFromUserId(friendId); - // 既にビューが存在する場合はスキップ(オブザーバーは既に登録済み) + // 既にビューが存在する場合は、ビュー作成をスキップ if (userView != null) { continue; } @@ -362,20 +362,6 @@ i++; } - // 新しく作成したビューに対してオブザーバーを登録 - activitiesLiveData.observe(MainActivity.this, activities -> { - if (activities == null || activities.isEmpty()) return; - - Activity latest = activities.get(activities.size() - 1); - - // UIスレッドで安全に更新 - FriendIconView friendView = userViews.get(friendId); - if (friendView != null) { - friendView.setComment(latest.getText()); - Log.d("ActivityUpdate", friendId + " のコメントを更新: " + latest.getText()); - } - }); - List sortedFriendUserIds = activityViewModel.getSortedFriendUserIds(); int size = sortedFriendUserIds.size(); List latestSix = sortedFriendUserIds.subList(Math.max(size - 6, 0), size); @@ -394,6 +380,25 @@ } }).start(); } + + // すべてのフレンド(既存+新規)に対してオブザーバーを登録 + for (String friendId : friends) { + MutableLiveData> activitiesLiveData = activityViewModel.getActivitiesLiveDataFromUserId(friendId); + + // オブザーバーを登録(LiveDataは同じオブザーバーの重複登録を自動的に防ぐ) + activitiesLiveData.observe(MainActivity.this, activities -> { + if (activities == null || activities.isEmpty()) return; + + Activity latest = activities.get(activities.size() - 1); + + // UIスレッドで安全に更新 + FriendIconView friendView = userViews.get(friendId); + if (friendView != null) { + friendView.setComment(latest.getText()); + Log.d("ActivityUpdate", friendId + " のコメントを更新: " + latest.getText()); + } + }); + } } }