FirebaseListAdapter no envía elementos individuales para la aplicación de chat – Firebase-Ui 3.1

2 minutos de lectura

FirebaseListAdapter no envia elementos individuales para la aplicacion de chat
dylan kane

Estoy creando una aplicación de chat en Android que usa google firebase para almacenar mensajes que los usuarios se escriben entre sí. Para mostrar estos mensajes a los usuarios, los leo de la base de datos y los organizo en un ListView personalizado con un ListAdapter. Esto funcionaba bien hasta que actualicé mis dependencias, específicamente firebase ui a:

com.firebaseui:firebase-ui:3.1.0

Ahora el código para construir el adaptador de lista no funciona, siendo:

adapter = new FirebaseListAdapter<ChatMessage>(FirebaseDatabase.getInstance().getReference("Lobbies").child(leaderID).child("Messages"), ChatMessage.class, R.layout.message, this) {
        @Override
        protected void populateView(View v, ChatMessage model, int position) {
            // Get references to the views of message.xml
            TextView messageText = (TextView)v.findViewById(R.id.message_text);
            TextView messageUser = (TextView)v.findViewById(R.id.message_user);
            TextView messageTime = (TextView)v.findViewById(R.id.message_time);

            // Set their text
            messageText.setText(model.getMessageText());
            messageUser.setText(model.getMessageUser());

            // Format the date before showing it
            messageTime.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)",
                    model.getMessageTime()));
        }
    };

Para solucionar este problema, actualicé el código para cumplir con los nuevos requisitos de la interfaz de usuario de firebase, haciendo que el código se convierta en:

FirebaseListOptions<ChatMessage> options = new FirebaseListOptions.Builder<ChatMessage>()
            .setQuery(FirebaseDatabase.getInstance().getReference("Lobbies").child(leaderID).child("Messages"), ChatMessage.class).setLayout(R.layout.message).build();

    adapter = new FirebaseListAdapter<ChatMessage>(options) {
        @Override
        protected void populateView(View v, ChatMessage model, int position) {
            // Get references to the views of message.xml
            TextView messageText = v.findViewById(R.id.message_text);
            TextView messageUser = v.findViewById(R.id.message_user);
            TextView messageTime = v.findViewById(R.id.message_time);

            // Set their text
            messageText.setText(model.getMessageText());
            messageUser.setText(model.getMessageUser());

            // Format the date before showing it
            messageTime.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)",
                    model.getMessageTime()));
        }
    };

Este código se compila bien ahora, pero la vista de lista no muestra los datos. ¿Hay una forma correcta específica de usar la nueva dependencia de Firebase ui para hacer el adaptador de lista?

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad