Android чат не обновляется на втором устройстве (пользователь-2) после добавления дочернего объекта на первом устройстве (пользователь-1) с использованием базы данных firebase и просмотра повторного просмотра - PullRequest
0 голосов
/ 17 февраля 2020

Я создаю чат между двумя пользователями, использующими базу данных в режиме реального времени без уведомления 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 устройство наСоздание активности мобильный просмотр для чат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...