Я хочу, чтобы, когда пользователь видел сообщение, оно должно было заменить текст с доставленного на увиденное.Но это происходит только тогда, когда я возвращаюсь и снова возвращаюсь к этому чату.Моя единственная проблема заключается в том, как обновить «доставлено» до «увиденного», когда открыт чат обоих пользователей.Все остальные рабочие в порядке, кроме этой проблемы. Может быть адаптер не уведомляет.вот мой код активности чата для увиденных сообщений:
private void seenMessage(){
messageRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (final DataSnapshot snapshot:dataSnapshot.getChildren()){
rootRef.child("Messages").child(friendUserId).child(currentUID).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot1) {
for (DataSnapshot snapshot1:dataSnapshot1.getChildren()){
ChatMessage chatMessage=snapshot1.getValue(ChatMessage.class);
if (chatMessage.getFrom().equals(friendUserId)){
HashMap seen=new HashMap();
seen.put("isseen",true);
snapshot.getRef().updateChildren(seen);
snapshot1.getRef().updateChildren(seen);
chatMessageAdapter.notifyDataSetChanged();
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
chatMessageAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
мой код адаптера для этого здесь
if (userMessageList.size()-1==i){
if (message.isIsseen()){
chatMessageViewHolder.seenStatus.setText("Seen");
}
else {
chatMessageViewHolder.seenStatus.setText("Delivered");
}
}
else {
chatMessageViewHolder.seenStatus.setVisibility(View.GONE);
}