Я создаю чат между двумя пользователями, использующими базу данных в режиме реального времени без уведомления pu или 1024 * или каких-либо служб, проблема, с которой я сталкиваюсь, заключается в том, что при отправке текста на устройство user-2 от user-1 не обновляется чат ... На chatAdapter.notifyDataSetChanged () ... Все остальное работает нормально. Примечание :: Если я перефразирую sh, весь чат активности происходит правильно. Вот мой onButtonClickCode ::
private void sendToDBIndirectly(final Chat chat, String tag) {
final DatabaseReference chatRef = FirebaseDatabase.getInstance().getReference().child( "Chat" ).child( "/" + tag );
chatRef.addListenerForSingleValueEvent( new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (!check) {
if (dataSnapshot.getChildrenCount() <= 0) {
chatRef.child( "1" ).setValue( chat );
chats.add( chat );
} else {
long count = dataSnapshot.getChildrenCount();
count++;
chatRef.child( String.valueOf( count ) ).setValue( chat );
chats.add( chat );
}
Collections.sort( chats, new Comparator<Chat>() {
DateFormat f = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
@Override
public int compare(Chat lhs, Chat rhs) {
try {
return f.parse( lhs.getTime() ).compareTo( f.parse( rhs.getTime() ) );
} catch (ParseException e) {
throw new IllegalArgumentException( e );
}
}
} );
chatAdapter = new ChatAdapter( ChatActivity.this, chats, "" );
LinearLayoutManager layoutManager = new LinearLayoutManager( ChatActivity.this );
layoutManager.setStackFromEnd(true);
chatHolder.setLayoutManager(layoutManager );
chatHolder.setAdapter( chatAdapter );
chatHolder.scrollToPosition( chats.size() - 1 );
chatAdapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
} );
}
Это мой адаптер ::
package myproject.com.reuseableitems.adapters;
public class ChatAdapter extends RecyclerView.Adapter<ChatAdapter.Chat_ViewHolder> {
private Context context;
private ArrayList<Chat> chats;
private String flag;
public ChatAdapter(Context context, ArrayList<Chat> chats, String flag) {
this.context = context;
this.chats = chats;
this.flag = flag;
}
@NonNull
@Override
public Chat_ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
return new Chat_ViewHolder( LayoutInflater.from( viewGroup.getContext() ).inflate( R.layout.adapter_chat, viewGroup, false ) );
}
@Override
public void onBindViewHolder(@NonNull Chat_ViewHolder viewHolder, int i) {
viewHolder.setImageData( chats.get(i) );
}
@Override
public int getItemCount() {
return chats.size();
}
class Chat_ViewHolder extends RecyclerView.ViewHolder {
RelativeLayout customer, seller;
TextView customerText, sellerText;
Chat_ViewHolder(View itemView) {
super( itemView );
customer = itemView.findViewById( R.id.customer );
seller = itemView.findViewById( R.id.seller );
customerText = itemView.findViewById( R.id.customerText );
sellerText = itemView.findViewById( R.id.senderText );
}
void setImageData(Chat chat) {
SimpleDateFormat sdf = new SimpleDateFormat( "HH:mm:ss", Locale.getDefault() );
if (chat.getTag().equals( "customer" )) {
customer.setVisibility( View.VISIBLE );
customerText.setText( chat.getMessage() + "\n" + chat.getTime() );
} else if (chat.getTag().equals( "seller" )) {
seller.setVisibility( View.VISIBLE );
sellerText.setText( chat.getMessage() + "\n" + chat.getTime() );
}
}
}
}
Запись чата Firebase ::
пользователь-1 просмотр чата 1 пользователь-2 просмотр чата 2
чат в android устройство наСоздание активности мобильный просмотр для чат