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 07cf77d..1b50529 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -4,10 +4,10 @@
-
+
-
+
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/MainActivity.java b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java
index 5bf8466..fcaa661 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
@@ -130,6 +130,30 @@
public void onChanged(List friends) {
// フレンドの追加と削除
updateActivityView(friends);
+
+ // 各フレンドのアクティビティ更新を監視
+ for (String friendId : friends) {
+ // 既にObserverが登録済みの場合はスキップ
+ if (observedFriendIds.contains(friendId)) {
+ continue;
+ }
+
+ MutableLiveData> activitiesLiveData = activityViewModel.getActivitiesLiveDataFromUserId(friendId);
+ activitiesLiveData.observe(MainActivity.this, activities -> {
+ if (activities == null || activities.isEmpty()) return;
+
+ Activity latest = activities.get(0);
+
+ // UIスレッドで安全に更新
+ FriendIconView friendView = userViews.get(friendId);
+ if (friendView != null) {
+ friendView.setComment(latest.getText());
+ Log.d("ActivityUpdate", friendId + " のコメントを更新: " + latest.getText());
+ }
+ });
+ // Observer登録済みとしてマーク
+ observedFriendIds.add(friendId);
+ }
}
});
@@ -352,30 +376,9 @@
i = 0;
for (String friendId : friends) {
FriendIconView userView = userViews.get(friendId);
- MutableLiveData> activitiesLiveData = activityViewModel.getActivitiesLiveDataFromUserId(friendId);
- // 既存のフレンドの場合は、Observerを登録するだけ(Viewは作成しない)
+ // 既存のフレンドの場合はスキップ(Viewは既に作成済み、ObserverはonCreate()で登録済み)
if (userView != null) {
- // 既にObserverが登録済みの場合はスキップ
- if (observedFriendIds.contains(friendId)) {
- continue;
- }
-
- // 既にViewが存在する場合は、Observerだけを登録
- activitiesLiveData.observe(MainActivity.this, activities -> {
- if (activities == null || activities.isEmpty()) return;
-
- Activity latest = activities.get(0);
-
- // UIスレッドで安全に更新
- FriendIconView friendView = userViews.get(friendId);
- if (friendView != null) {
- friendView.setComment(latest.getText());
- Log.d("ActivityUpdate", friendId + " のコメントを更新: " + latest.getText());
- }
- });
- // Observer登録済みとしてマーク
- observedFriendIds.add(friendId);
continue;
}
@@ -424,21 +427,7 @@
i++;
}
- // 新規作成したViewに対してObserverを登録
- activitiesLiveData.observe(MainActivity.this, activities -> {
- if (activities == null || activities.isEmpty()) return;
-
- Activity latest = activities.get(0);
-
- // UIスレッドで安全に更新
- FriendIconView friendView = userViews.get(friendId);
- if (friendView != null) {
- friendView.setComment(latest.getText());
- Log.d("ActivityUpdate", friendId + " のコメントを更新: " + latest.getText());
- }
- });
- // Observer登録済みとしてマーク
- observedFriendIds.add(friendId);
+ // Observerの登録はonCreate()のfriendUserIdsLiveDataのObserverで一括管理
List sortedFriendUserIds = activityViewModel.getSortedFriendUserIds();
int size = sortedFriendUserIds.size();