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 cc87426..d8c9ac2 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 @@ -149,34 +149,67 @@ //FriendIconView friendView = userViews.get(friendId); //if (friendView == null) continue; - activitiesLiveData.observeForever(new Observer>() { - //アクティビティを更新したらonChangedが呼び出される - @Override - public void onChanged(List activities) { - // 更新したフレンドの再登場,更新してないフレンドの退場 - //更新した人を見つけてFriendIconViewを呼び出して、 - List sortedFriendUserIds = activityViewModel.getSortedFriendUserIds();//アクティビティを更新した最新6人のリスト -// FriendIconView userView = userViews.get(friendId); -// if (userView != null && activities != null && !activities.isEmpty()) { -// //latestは最新のアクティビティを保持する -// Activity latest = activities.get(activities.size() - 1); -// } -// // 最新更新フレンドをリストに追加(最大6人保持) - int size = sortedFriendUserIds.size(); - List latestSix = sortedFriendUserIds.subList(Math.max(size - 6, 0), size); - synchronized (recentUpdatedFriends) { - if (latestSix.contains(friendId)) { - recentUpdatedFriends.remove(friendId); - recentUpdatedFriends.add(0, friendId); - if (recentUpdatedFriends.size() > 6) { - recentUpdatedFriends.remove(recentUpdatedFriends.size() - 1); - } - } - } -//スレッド処理をいれて更新できるようにする + + +//natty もともと +// activitiesLiveData.observeForever(new Observer>() { +// //アクティビティを更新したらonChangedが呼び出される +// @Override +// public void onChanged(List activities) { +// // 更新したフレンドの再登場,更新してないフレンドの退場 +// //更新した人を見つけてFriendIconViewを呼び出して、 +// List sortedFriendUserIds = activityViewModel.getSortedFriendUserIds();//アクティビティを更新した最新6人のリスト +//// FriendIconView userView = userViews.get(friendId); +//// if (userView != null && activities != null && !activities.isEmpty()) { +//// //latestは最新のアクティビティを保持する +//// Activity latest = activities.get(activities.size() - 1); +//// } +//// // 最新更新フレンドをリストに追加(最大6人保持) +// int size = sortedFriendUserIds.size(); +// List latestSix = sortedFriendUserIds.subList(Math.max(size - 6, 0), size); +// +// synchronized (recentUpdatedFriends) { +// if (latestSix.contains(friendId)) { +// recentUpdatedFriends.remove(friendId); +// recentUpdatedFriends.add(0, friendId); +// if (recentUpdatedFriends.size() > 6) { +// recentUpdatedFriends.remove(recentUpdatedFriends.size() - 1); +// } +// } +// } +////スレッド処理をいれて更新できるようにする +// } + //}); + + //natty かきかえご + activitiesLiveData.observe(this, activities -> { + if (activities == null || activities.isEmpty()) return; + + // 最新のアクティビティを取得 + Activity latest = activities.get(activities.size() - 1); + + // コメントを更新 + FriendIconView friendView = userViews.get(friendId); + if (friendView != null) { + friendView.setComment(latest.getText()); } + + // 並び順を更新 + synchronized (recentUpdatedFriends) { + recentUpdatedFriends.remove(friendId); + recentUpdatedFriends.add(0, friendId); + if (recentUpdatedFriends.size() > 6) { + recentUpdatedFriends.remove(recentUpdatedFriends.size() - 1); + } + } + + // 🔥 並び替えた最新リストでUIを更新 + runOnUiThread(() -> updateActivityView(recentUpdatedFriends)); }); + //////////////////// + + } @@ -351,44 +384,44 @@ } } - private void setupActivityObservers(List sortedFriendUserIds) { - for (String friendId : sortedFriendUserIds) { - FriendIconView userView = userViews.get(friendId); - if (userView == null) { - Log.w("MainActivity", "userViews に存在しません: " + friendId); - continue; - } - - MutableLiveData> activitiesLiveData = - activityViewModel.getActivitiesLiveDataFromUserId(friendId); - - activitiesLiveData.observeForever(new Observer>() { - @Override - public void onChanged(List activities) { - if (activities == null || activities.isEmpty()) return; - - Activity latest = activities.get(activities.size() - 1); - Log.d("ActivityUpdate", friendId + " 最新: " + latest.getText()); - - // FriendIconView の更新 - //userView.setComment(latest.getText()); - - // 最近更新したフレンドリストを更新(最大6人) - synchronized (sortedFriendUserIds) { - sortedFriendUserIds.remove(friendId); - sortedFriendUserIds.add(0, friendId); - - if (sortedFriendUserIds.size() > 6) { - sortedFriendUserIds.remove(sortedFriendUserIds.size() - 1); - } - } - - // 並び順をログ出力(デバッグ用) - Log.d("RecentFriends", "最新更新順: " + sortedFriendUserIds); - } - }); - } - } +// private void setupActivityObservers(List sortedFriendUserIds) { +// for (String friendId : sortedFriendUserIds) { +// FriendIconView userView = userViews.get(friendId); +// if (userView == null) { +// Log.w("MainActivity", "userViews に存在しません: " + friendId); +// continue; +// } +// +// MutableLiveData> activitiesLiveData = +// activityViewModel.getActivitiesLiveDataFromUserId(friendId); +// +// activitiesLiveData.observeForever(new Observer>() { +// @Override +// public void onChanged(List activities) { +// if (activities == null || activities.isEmpty()) return; +// +// Activity latest = activities.get(activities.size() - 1); +// Log.d("ActivityUpdate", friendId + " 最新: " + latest.getText()); +// +// // FriendIconView の更新 +// //userView.setComment(latest.getText()); +// +// // 最近更新したフレンドリストを更新(最大6人) +// synchronized (sortedFriendUserIds) { +// sortedFriendUserIds.remove(friendId); +// sortedFriendUserIds.add(0, friendId); +// +// if (sortedFriendUserIds.size() > 6) { +// sortedFriendUserIds.remove(sortedFriendUserIds.size() - 1); +// } +// } +// +// // 並び順をログ出力(デバッグ用) +// Log.d("RecentFriends", "最新更新順: " + sortedFriendUserIds); +// } +// }); +// } +// } private void updateActivityView(@NonNull List friends) { ///natty ユーザごとにコメントの更新をする