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 d5021fd..29af578 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 @@ -59,7 +59,7 @@ //アクティビティの選択肢 private String[] words = {"ひまnow", "あそぼ!", "そろそろ会いたない〜?", "勉強なう", "電話しよ~", "お風呂入ってくる~", "今暇だよー!", "いそがしい~!!"}; private Button openDialogButton; - private Map userViews = new HashMap<>(); + private Map userViews = new HashMap<>(); ActivityViewModel activityViewModel; Tampopo tampopo; @@ -124,14 +124,26 @@ // } // }); - MutableLiveData> activitiesLiveData = activityViewModel.getActivitiesLiveDataFromUserId(tampopo.getUserId()); - activitiesLiveData.observe(this, new Observer>() { + MutableLiveData> friendsLiveData = activityViewModel.getFriendUserIdsLiveData(); + friendsLiveData.observe(this, new Observer>() { @Override - public void onChanged(List activities) { - updateActivityView(activities); + public void onChanged(List friends) { + // フレンドの追加と削除 + updateActivityView(friends); } }); + for (String friendId: userViews.keySet()) { + MutableLiveData> activitiesLiveData = activityViewModel.getActivitiesLiveDataFromUserId(friendId); + activitiesLiveData.observe(this, new Observer>() { + @Override + public void onChanged(List activities) { + // 更新したフレンドの再登場,更新してないフレンドの退場」 + } + }); + activitiesLiveData.observe(this, userViews.get(friendId)); + } + //メイン画面から通知一覧画面への遷移 // ImageButton notificationButton = (ImageButton)findViewById(R.id.notification); // notificationButton.setOnClickListener(new View.OnClickListener() { @@ -157,14 +169,14 @@ openDialogButton.setOnClickListener(v -> showInputDialog()); // 仮データを作る(ユーザID、コメント) - List mockActivities = new ArrayList<>(); - mockActivities.add(new Activity("user01", "act01","ひま〜", "2025-09-25 10:00" )); - mockActivities.add(new Activity("user02", "act02","勉強してるよ", "2025-09-25 10:01")); - mockActivities.add(new Activity("user03", "act03","ねむい〜", "2025-09-25 10:02")); +// List mockActivities = new ArrayList<>(); +// mockActivities.add(new Activity("user01", "act01","ひま〜", "2025-09-25 10:00" )); +// mockActivities.add(new Activity("user02", "act02","勉強してるよ", "2025-09-25 10:01")); +// mockActivities.add(new Activity("user03", "act03","ねむい〜", "2025-09-25 10:02")); // 表示を更新 - updateActivityView(mockActivities); +// updateActivityView(mockActivities); // 疑似通知ボタン chat申請後ダイアログを表示するため、それの疑似的な申請コード //まだ動くかわからない @@ -281,7 +293,7 @@ } } - private void updateActivityView(List activities) { + private void updateActivityView(List friends) { //TextView comment = this.findViewById(R.id.friend01_comment); //for (Activity ac: activities.values()) { // comment.setText(ac.getText()); @@ -290,16 +302,15 @@ ///natty ユーザごとにコメントの更新をする LinearLayout messageList = findViewById(R.id.messageList); - for (Activity entry : activities) { - String userId = entry.getUserId(); - Activity activity = entry; + for (String friendId : friends) { +// String friendId = entry.getUserId(); +// Activity activity = entry; - View userView = userViews.get(userId); + FriendIconView userView = userViews.get(friendId); if (userView == null) { // 新しいユーザなので、アイコン+コメントを作成 - LinearLayout container = new LinearLayout(this); - container.setOrientation(LinearLayout.HORIZONTAL); + FriendIconView container = new FriendIconView(this); container.setPadding(16, 16, 16, 16); // ユーザのアイコン(固定) @@ -315,26 +326,27 @@ ); // ユーザIDに応じてアイコンリソースを決定(仮にハードコード or マッピング) - iconView.setImageResource(getUserIconResource(userId)); // ←ここがポイント + iconView.setImageResource(getUserIconResource(friendId)); // ←ここがポイント // コメント部分 - TextView commentView = new TextView(this); - commentView.setTextSize(16); - commentView.setPadding(16, 0, 0, 0); - commentView.setText(activity.getText()); - - // コンテナに追加 - container.addView(iconView); - container.addView(commentView); +// TextView commentView = new TextView(this); +// commentView.setTextSize(16); +// commentView.setPadding(16, 0, 0, 0); +// commentView.setText(activity.getText()); +// +// // コンテナに追加 +// container.addView(iconView); +// container.addView(commentView); // Mapに登録、画面に追加 - userViews.put(userId, container); + userViews.put(friendId, container); messageList.addView(container); - } else { - // 既に表示されている → コメントだけ更新 - TextView commentView = (TextView) ((LinearLayout) userView).getChildAt(1); - commentView.setText(activity.getText()); +// } else { +// // 既に表示されている → コメントだけ更新 +// TextView commentView = (TextView) ((LinearLayout) userView).getChildAt(1); +// commentView.setText(activity.getText()); +// } } } @@ -444,7 +456,7 @@ // } private void highlightUserIcon(String userId) { runOnUiThread(() -> { - LinearLayout container = userViews.get(userId); + FriendIconView container = userViews.get(userId); if (container != null && container.getChildCount() > 0) { View v = container.getChildAt(0); if (v instanceof ShapeableImageView) { @@ -458,7 +470,7 @@ private void clearUserIconHighlight(String userId) { runOnUiThread(() -> { - LinearLayout container = userViews.get(userId); + FriendIconView container = userViews.get(userId); if (container != null && container.getChildCount() > 0) { View v = container.getChildAt(0); if (v instanceof ShapeableImageView) {