ListView не отображает ничего из базы данных Firebase - PullRequest
0 голосов
/ 11 марта 2020

В onCreate () я вызывал эту функцию DisplayMessage () ListView, ничего не упоминая. Но в базе данных Firebase есть данные. Данные не отображаются на эмуляторе.

    private void displayChatMessage() {
    ListView listOfMessage = findViewById(R.id.list_of_message);
    FirebaseListOptions<ChatMessage> options = new FirebaseListOptions.Builder<ChatMessage>()
            .setQuery(FirebaseDatabase.getInstance().getReference(), ChatMessage.class)
            .setLayout(R.layout.list_item)
            .build();
     adapter = new FirebaseListAdapter<ChatMessage>(options) {
        @Override
        protected void populateView(@NonNull View v, @NonNull ChatMessage model, int position) {
            TextView messageText, messageUser, messageTime;
            messageText = (BubbleTextView) v.findViewById(R.id.message_text);
            messageUser = (TextView) v.findViewById(R.id.message_user);
            messageTime = (TextView) v.findViewById(R.id.message_time);

            messageText.setText(model.getMessageText());
            messageUser.setText(model.getMessageUser());
            messageTime.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)",                 model.getMessageTime()));
        }
    };
    listOfMessage.setAdapter(adapter);
}

Я включил правила чтения и записи как true. Код для представления моего списка ниже - list_item. xml file ->

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_alignParentTop="true"
        android:layout_alignParentStart="true"
        android:id="@+id/message_user"
        android:textStyle="normal|bold"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_alignParentBottom="@+id/message_user"
        android:layout_alignParentEnd="true"
        android:id="@+id/message_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <com.github.library.bubbleview.BubbleTextView
        android:layout_alignParentStart="true"
        android:layout_marginTop="5dp"
        android:layout_below="@id/message_user"
        android:textAppearance="@style/TextAppearance.AppCompat.Body1"
        android:textColor="#FFF"
        android:textSize="18sp"
        android:id="@+id/message_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        app:arrowWidth="8dp"
        app:angle="8dp"
        app:arrowHeight="10dp"
        app:arrowPosition="14dp"
        app:arrowLocation="left"
        app:bubbleColor="#333639"
        app:arrowCenter="true"
        />
</RelativeLayout>

1 Ответ

0 голосов
/ 11 марта 2020

Вы должны передать запрос, а не ссылку на базу данных в методе setQuery FirebaseListOptions, например,

Query query = FirebaseDatabase.getInstance().getReference().child("your node value");

, а затем передать этот запрос следующим образом:

FirebaseListOptions<ChatMessage> options = new FirebaseListOptions.Builder<ChatMessage>()
            .setQuery(query, ChatMessage.class)
            .setLayout(R.layout.list_item)
            .build();

Также не забывайте запускать функцию прослушивания в onStart и останавливать прослушивание в onStop, например:

@Override
protected void onStart() {
    super.onStart();
    adapter.startListening();
}

@Override
protected void onStop() {
    super.onStop();
    adapter.stopListening();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...