объекта ChatRoom лежат некоторые поля и List<Message> messages;
Есть первая активность с RecyclerView; Для отображения списка чат-комнат
Адаптер имеет ссылку на ChatRoomStorage instance;
Есть втора активность с RecyclerView; Для отображения сообщений в конкретной комнате
Адаптер в конструкторе получает ссылку на ChatRoom chatRoom = (ChatRoom) intent.getExtras().getSerializable(App.CHAT_ROOM_EXTRA);
Переход с первой активности на вторую происходит по клику на елемент RecyclerView.
Формируется интент
intent.putExtra(App.CHAT_ROOM_EXTRA, chatRoomStorage.getChatRoomList().get(getAdapterPosition()));
context.startActivity(intent);
Так как это мессенджер и пользователю приходят сообщения в service.
Когда приходит сообщение то сервис кладёт их в ChatRoomStorage таким образом:
chatRoomStorage.getChatRoomById(message.getRoomId()).addMessage(message);
После этого идёт бродкаст. Активность ловит бродкаст и вызывает adapter.notifyDataSetChanged();
Но при этом ничего на экране не меняется.
Если нажать кнопку back и снова кликнуть на тот же елемент recyclerView то новые сообщения там будут отображены.
Где тут собака зарыта? Как это исправить?
без кода сложно помочь
элемент
Обсуждают сегодня