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..914449a 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,85 +130,6 @@ } }); - //アクティビティを投稿した人がアクティビティを更新しないか監視する - //なにかをクリックしたらここに飛んでくる - for (String friendId : userViews.keySet()) { - //final String updateFriendId = friendId; - MutableLiveData> activitiesLiveData = activityViewModel.getActivitiesLiveDataFromUserId(friendId); - //MutableLiveData> activitiesLiveData = activityViewModel.getActivitiesLiveDataFromUserId(updateFriendId); - - //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); - } - } - } -//スレッド処理をいれて更新できるようにする - } - }); - } - - -// 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(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); -// String updateFriendId = latest.getUserId(); -// } -// //フレンドの位置決め -// // 最新更新フレンドをリストに追加(最大6人保持) -// List list = activityViewModel.getSortedFriendUserIds(); -// int size = list.size(); -// List latestSix = list.subList(Math.max(size - 6, 0), size); -// -// synchronized (recentUpdatedFriends) { -// if (latestSix.contains(updateFriendId)) { -// recentUpdatedFriends.remove(updateFriendId); -// recentUpdatedFriends.add(0, updateFriendId); -// if (recentUpdatedFriends.size() > 6) { -// recentUpdatedFriends.remove(recentUpdatedFriends.size() - 1); -// } -// } -// } -// -// } -// }); -// } - //メイン画面から設定画面への遷移 ImageButton settingButton = (ImageButton) findViewById(R.id.setting); settingButton. @@ -389,26 +310,14 @@ i = 0; for (String friendId : friends) { FriendIconView userView = userViews.get(friendId); - //userViews.put(friendId, null); MutableLiveData> activitiesLiveData = activityViewModel.getActivitiesLiveDataFromUserId(friendId); -// for (String friendId : sortedFriendUserIds) { -// FriendIconView userView = userViews.get(friendId); -// MutableLiveData> activitiesLiveData = activityViewModel.getActivitiesLiveDataFromUserId(friendId); - //nattyもしnullだったらって処理入れた気がする -// if (userView == null) { -// userView = new FriendIconView( -// MainActivity.this, -// friendId, -// userViewModel.getNickname(friendId), -// chatViewModel -// ); -// userViews.put(friendId, userView); -// } + // 既にビューが存在する場合はスキップ(オブザーバーは既に登録済み) + if (userView != null) { + continue; + } + // 新しいユーザなので、アイコン+コメントを作成 - //FriendIconView container = new FriendIconView(this); - - new Thread(new Runnable() { @Override public void run() { @@ -421,31 +330,15 @@ container.setPadding(16, 16, 16, 16); container.setId(View.generateViewId()); -// // ユーザのアイコン(固定) -// ShapeableImageView iconView = new ShapeableImageView(MainActivity.this); -// iconView.setLayoutParams(new LinearLayout.LayoutParams(100, 100)); -// iconView.setScaleType(ImageView.ScaleType.CENTER_CROP); -// iconView.setStrokeColor(ContextCompat.getColorStateList(MainActivity.this, R.color.red)); -// iconView.setStrokeWidth(2f); -// iconView.setShapeAppearanceModel( -// iconView.getShapeAppearanceModel().toBuilder() -// .setAllCornerSizes(50) // 丸く -// .build() -// ); ConstraintLayout.LayoutParams params = new ConstraintLayout.LayoutParams( ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT ); container.setLayoutParams(params); layout.addView(container); -// -// // ユーザIDに応じてアイコンリソースを決定(仮にハードコード or マッピング) -// iconView.setImageResource(getUserIconResource(friendId)); // ←ここがポイント // Mapに登録、画面に追加 userViews.put(friendId, container); -// userView = container; -// messageList.addView(container); ConstraintSet set = new ConstraintSet(); set.clone(layout); @@ -469,7 +362,7 @@ i++; } - // TODO: CHANGE + // 新しく作成したビューに対してオブザーバーを登録 activitiesLiveData.observe(MainActivity.this, activities -> { if (activities == null || activities.isEmpty()) return;