diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index b268ef3..77e74ca 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -4,6 +4,14 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/ActivityViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/ActivityViewModel.java
index 455723a..020765a 100644
--- a/app/src/main/java/com/example/tampopo_client/viewmodels/ActivityViewModel.java
+++ b/app/src/main/java/com/example/tampopo_client/viewmodels/ActivityViewModel.java
@@ -149,12 +149,25 @@
List userActivities = userActivitiesLiveData.getValue();
if (userActivities == null || userActivities.isEmpty()) {
+ // 初回またはこれまでアクティビティが無い場合はそのまま反映
userActivitiesLiveData.postValue(List.of(latestActivity));
} else {
- if (userActivities.get(0).getActivityId().equals(latestActivity.getActivityId())) {
+ Activity previousLatest = userActivities.get(0);
+
+ // activityId が同じでも、テキストや更新時刻が変わっている場合がある。
+ // その場合も FriendIconView 側に変更を通知したいので、完全に同一内容のときのみスキップする。
+ boolean isSameActivityId = previousLatest.getActivityId().equals(latestActivity.getActivityId());
+ boolean isSameText = previousLatest.getText() != null
+ && previousLatest.getText().equals(latestActivity.getText());
+ boolean isSameUpdateTime = previousLatest.getUpdateTime() != null
+ && previousLatest.getUpdateTime().equals(latestActivity.getUpdateTime());
+
+ if (isSameActivityId && isSameText && isSameUpdateTime) {
+ // サーバ側で一切変更がなければ何も通知しない
return;
}
+ // いずれかが変化していれば最新情報として LiveData を更新
userActivitiesLiveData.postValue(List.of(latestActivity));
}
}
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 9911876..3b52a93 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
@@ -468,20 +468,10 @@
if (i < 6) {
i++;
}
-
- // TODO: CHANGE
- 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());
- }
- });
+ // FriendIconView 自身が持つアクティビティ監視用 Observer を利用して
+ // 各フレンドの最新アクティビティが更新されたタイミングで
+ // 吹き出しコメントが自動的に変わるようにする
+ activitiesLiveData.observe(MainActivity.this, container.getActivitiesObserver());
List sortedFriendUserIds = activityViewModel.getSortedFriendUserIds();
int size = sortedFriendUserIds.size();