Метод принудительной отправки базы данных Firebase или обратное дерево данных? - PullRequest
0 голосов
/ 08 октября 2018

Я использую метод push() для создания уникальных идентификаторов для базы данных, но когда я создаю идентификатор с помощью метода push, он добавляется в конец дерева, но я хочу, чтобы он был сверху.Как я могу это сделать?

Например, на этой картинке нижняя - самая новая, я хочу, чтобы она была сверху.Как я могу это сделать?

Изображение

Я хочу это, потому что я использую RecyclerView с адаптером Firebase и адаптер начинает читать сверху.

edit: как получить данные снизу вверх из firebase?

Я хочу ответить на этот вопрос, но полезного ответа нет.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Я использую метод push () для создания уникальных идентификаторов для базы данных, но когда я создаю идентификатор с методом push, он добавляется в конец дерева, но я хочу, чтобы он был сверху

Когда вы используете метод push(), объекты в Firebase Console упорядочены в хронологическом порядке, и, к сожалению, вы ничего не можете с этим поделать.Этот порядок не может быть изменен.Если вы хотите отобразить элементы из базы данных в RecyclerView и, говоря гипотетически, вы могли бы изменить порядок в консоли, это не значит, что этот порядок совпадает с порядком в RecyclerView,Чтобы отображать ваши элементы в определенном порядке, я рекомендую вам использовать запрос и сортировать их в соответствии со свойством отметки времени.Для этого, пожалуйста, смотрите ответ Фрэнка ван Пуффелена из этого поста , и если вы используете библиотеку Firebase-UI , пожалуйста, смотрите мой ответ из этого поста .

0 голосов
/ 09 октября 2018

вы можете написать простой запрос, чтобы получить данные по мере необходимости, добавить параметр даты в ваш объект, а затем запросить данные по дате

 DatabaseReference reference = FirebaseDatabase.getInstance().getReference();

Query query = reference.child("data").orderByChild("date");
query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            for (DataSnapshot child: dataSnapshot.getChildren()) {
                // fill recyclarView with data
            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...