2016-09-11 2 views
3

У меня есть узел со списком счетов пользователей в Firebase БД, я хотел бы упорядочить список от самого высокого до самого низкого и показывать только первые 10 баллов:Android - Firebase порядка по значению

Мой Полноразмерный узел :

leader_board 
-$week_id 
    -$user_id: score 

И мой Java-код выглядит следующим образом:

Query leader_board_query = leader_board_reference.child(week_id).orderByValue().limitToLast(10); 

по какой-то причине, он всегда заказывает от низшего к высшему. Я пробовал использовать limitToFirst(10) и ничего не изменилось, пожалуйста, помогите

+0

Обновленный ответ, сообщите, если он работает (или не работает)! –

ответ

1

мне удалось решить эту болезненную проблему. Все, что мне нужно было сделать, это немного изменить мой макет recyclerview, добавив следующие строки кодов в его менеджер компоновки.

LinearLayoutManager layout_manager = new LinearLayoutManager(getContext()); 
layout_manager.setReverseLayout(true); 
layout_manager.setStackFromEnd(true); 

Список заказан в обратном порядке, который приводится в заказе от наивысшего до наименьшего.

3

orderByValue() всегда будет заказывать по возрастанию.

Вы можете использовать limitToLast(), чтобы получить только последний раздел отсортированных предметов, тогда вы должны вернуть программно.

Пример набора данных:

1, 3, 8, 9, 0, 5, 4, 7, 6, 2 

orderByValue().limitToFirst(3) должен вернуть 0, 1, 2

orderByValue().limitToLast(3) должен вернуть 7, 8, 9, а затем вернуть массив, чтобы получить 9, 8, 7.

Примечание: Это все проверялось, пожалуйста, доложите с результатами;)

+0

Спасибо @ Антоин, я попробую сейчас и отчитаюсь – spongyboss