Построитель опций состоит из метода setQuery, который принимает ссылку на базу данных и объект модели; setLifecycleOwner, который выполняет действие, которое запускает обновления адаптера.

аю приложение для чата на Android, которое использует Google Firebase для хранения сообщений, которые пользователи пишут друг другу. Чтобы отобразить эти сообщения пользователям, я прочитал их из базы данных и организовал их в пользовательский ListView с помощью ListAdapter. Это работало нормально, пока я не обновил свои зависимости, в частности Firebase UI, до:

com.firebaseui:firebase-ui:3.1.0

Теперь код для построения адаптера списка не работает:

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()));
        }
    };

Чтобы исправить эту проблему, я обновил код, чтобы он соответствовал новым требованиям пользовательского интерфейса Firebase, сделав код:

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()));
        }
    };

Этот код теперь хорошо компилируется, но просмотр списка не отображает данные. Есть ли конкретный правильный способ использования новой зависимости пользовательского интерфейса firebase для создания адаптера списка?