Построитель опций состоит из метода 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 для создания адаптера списка?

Ответы на вопрос(2)

Ваш ответ на вопрос