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();