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?