diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index b268ef3..21a368a 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -4,6 +4,14 @@
+
+
+
+
+
+
+
+
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 0897082..639c779 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -4,6 +4,7 @@
-
diff --git a/app/src/main/java/com/example/tampopo_client/views/FriendIconView.java b/app/src/main/java/com/example/tampopo_client/views/FriendIconView.java
index e4c197e..4b4bba9 100644
--- a/app/src/main/java/com/example/tampopo_client/views/FriendIconView.java
+++ b/app/src/main/java/com/example/tampopo_client/views/FriendIconView.java
@@ -33,6 +33,7 @@
private String friendUserId;
private String friendUserNickname;
private ChatViewModel chatViewModel;
+ private boolean isActivityObserverRegistered = false;
//ActivityLiveData
private final Observer> activitiesObserver = new Observer>() {
@@ -64,6 +65,14 @@
return chatObserver;
}
+ public boolean isActivityObserverRegistered() {
+ return isActivityObserverRegistered;
+ }
+
+ public void setActivityObserverRegistered(boolean registered) {
+ isActivityObserverRegistered = registered;
+ }
+
public FriendIconView(Context context, String friendUserId, String friendUserNickname, ChatViewModel chatViewModel) {
this(context);
this.friendUserId = friendUserId;
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 f6b4111..a8c0de4 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
@@ -143,42 +143,6 @@
}
});
-
- for (String friendId : userViews.keySet()) {
- final String updateFriendId = friendId;
- MutableLiveData> activitiesLiveData = activityViewModel.getActivitiesLiveDataFromUserId(updateFriendId);
- //MutableLiveData> activitiesLiveData = activityViewModel.getActivitiesLiveDataFromUserId(updateFriendId);
-
- FriendIconView friendView = userViews.get(friendId);
- if (friendView == null) continue;
- //activitiesLiveData.observeForever(friendView);
- activitiesLiveData.observeForever(new Observer>() {
- @Override
- public void onChanged(List activities) {
- // 更新したフレンドの再登場,更新してないフレンドの退場
- //更新した人を見つけてFriendIconViewを呼び出して、
- FriendIconView userView = userViews.get(updateFriendId);
- if (userView != null && activities != null && !activities.isEmpty()) {
- Activity latest = activities.get(activities.size() - 1);
- }
- //フレンドの位置決め
- // 最新更新フレンドをリストに追加(最大6人保持)
- synchronized (recentUpdatedFriends) {
- // すでに存在する場合は削除して再追加(重複防止)
- recentUpdatedFriends.remove(updateFriendId);
- // 先頭に追加(最近更新した人ほど前)
- recentUpdatedFriends.add(0, updateFriendId);
-
- // 6人を超えたら古いものを削除
- if (recentUpdatedFriends.size() > 6) {
- recentUpdatedFriends.remove(recentUpdatedFriends.size() - 1);
- }
- }
-
- }
- });
- }
-
//メイン画面から設定画面への遷移
ImageButton settingButton = (ImageButton) findViewById(R.id.setting);
settingButton.setOnClickListener(new View.OnClickListener() {
@@ -350,9 +314,12 @@
userViews.put(friendId, container);
userView = container;
//messageList.addView(container);
+ }
- // TODO: CHANGE
- activitiesLiveData.observeForever(container.getActivitiesObserver());
+ // Observerがまだ登録されていない場合は登録する
+ if (!userView.isActivityObserverRegistered()) {
+ activitiesLiveData.observe(this, userView.getActivitiesObserver());
+ userView.setActivityObserverRegistered(true);
}
ConstraintSet set = new ConstraintSet();