Firebase по умолчанию заказывает данные с самого начала, и мне нужно, чтобы они были заказаны с самого начала.
Я использую для этого временную метку и, похоже, не работает.
private void filldata() {
mDatabase.child("Data").orderByChild("timestamp").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot snapshot, String s) {
System.out.println("snapshot:" + snapshot.toString());
}
}
Поскольку orderByChild() сортирует данные только в порядке возрастания, вы должны сохранить дополнительный элемент данных в своем дочернем узле со значением timestamp*(-1), а затем отсортировать (упорядочить) по этому элементу данных.
Я предлагаю использовать
mDatabase.child("Data").orderByKey().limitToLast(no_of_items_you_want)
Это даст вам список последних данных
Также, чтобы получить значение от снимка, используйте
snapshot.getValue(String.class);
он будет работать, если вы использовали метод push () при загрузке ... покажите также этот код
Вам не нужно использовать здесь orderByChild() в вашем случае, потому что firebase сама генерирует уникальный ключ, основанный на метке времени, поэтому вы можете просто использовать orderByKey() в своем запросе, и вы получите свои данные в самом последнем порядке.
The unique key is based on a timestamp, so list items will automatically be ordered chronologically. Because Firebase generates a unique key for each blog post, no write conflicts will occur if multiple users add a post at the same time. You can find more here
Ваш код правильный. Обычно предлагаемый способ заказа - использование отрицательной отметки времени.
тем не мение Ранее я заметил, что firebase упорядочивает ваши результаты по отметкам времени, как вы в настоящее время хотите, чтобы это происходило. Когда устройство получает результаты, оно меняет их порядок по прибытии (подозрение).
Чтобы проверить это, попробуйте ограничить свои результаты с помощью функции .limitToLast(n), вы поймете, что хотя firebase будет возвращать вам последние 10 (в порядке меток времени), эти результаты не будут упорядочены по меткам времени.
Следовательно, лучшим решением будет сохранить результаты firebase в списке и переупорядочить список с помощью инструмента сортировки, такого как компаратор
Вы можете отказаться от recyclerView, который работал у меня.