Android / Firebase realtime-база данных, как получить только последнее сообщение? - PullRequest
0 голосов
/ 06 ноября 2019

Я использую базу данных Firebase в Android Studio. Кодекс Java. Я использую базу данных в реальном времени. Я делаю приложение чата. Я хочу показать пользователям последнее сообщение в их почтовом ящике.

У меня есть эта база данных:

message: {
       User uıd: {
                Uid of the person he is talking to: {  
                   random key: {
                        -date
                        -from
                        -message
                        -time
                        -type
                       }
                    }
                }

У меня есть ссылка на базу данных als:


mAuth = FirebaseAuth.getInstance();
currentUserID = mAuth.getCurrentUser().getUid();
ChatsRef=FirebaseDatabase.getInstance().getReference().child("message").child(currentUserID);

I 'используя это, чтобы получить:


  public void messageegetir(){
        FirebaseRecyclerOptions<Messages> options =
                new FirebaseRecyclerOptions.Builder<Messages>()
                        .setQuery(ChatsRef,Messages.class)
                        .build();

        FirebaseRecyclerAdapter<Messages, ChatsViewHolder> adapter =
                new FirebaseRecyclerAdapter<Messages, ChatsViewHolder>(options) {
                    @Override
                    protected void onBindViewHolder(@NonNull final ChatsViewHolder holder, final int position, @NonNull final Messages model) {
                        final String usersIDs = getRef(position).getKey();
                        final String[] retImage = {"default_image"};

                    }

                    @NonNull
                    @Override
                    public ChatsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
                        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.message_list_model,viewGroup,false);
                        return new ChatsViewHolder(view);
                    }
                };

        chatlist.setAdapter(adapter);
        adapter.startListening();
        updateUserStatus("online");
    }

мой класс публикующих статов:

public static class ChatsViewHolder extends RecyclerView.ViewHolder{

        CircleImageView profileImage ;
        ImageView onlinestatus;
        TextView lastmessage , userName ;

        public ChatsViewHolder(@NonNull View itemView) {
            super(itemView);

            profileImage =itemView.findViewById(R.id.messageprofileimageee);
            userName =itemView.findViewById(R.id.messagenameee);
            lastmessage =itemView.findViewById(R.id.messageinfooo);
            onlinestatus =itemView.findViewById(R.id.onlinestatus);
        }
    }

Класс сообщений:

public class Messages {
    public String data, time, type, message, from  ;

    public Messages(){

    }

    public Messages(String data, String time, String type, String message, String from) {
        this.data = data;
        this.time = time;
        this.type = type;
        this.message = message;
        this.from = from;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getFrom() {
        return from;
    }

    public void setFrom(String from) {
        this.from = from;
    }
}

Как я могу получить эти данные и записать ихв текстовом виде?

1 Ответ

0 голосов
/ 06 ноября 2019

Я предлагаю вам изменить структуру вашей базы данных, денормализовать ее так, как это рекомендуется документами Firebase. см ссылку https://firebase.google.com/docs/database/android/structure-data#best_practices_for_data_structure

и вы поймете

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