FirebaseRecylcerVAdapter Сортировка от высшего к низшему - PullRequest
0 голосов
/ 11 июня 2018

Я использую firebase recyclerAdapter, чтобы заполнить мое представление и хочу отсортировать эти данные от самой высокой до самой низкой точки.

database structure

PS: я использую пожарную базу в реальном временибаза данных.

enter image description here

1 Ответ

0 голосов
/ 11 июня 2018

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

. Для решения этой проблемы можно быстро изменить тип данных со строки на int или long.Для чисел это нормальный порядок:

  • 1308
  • 1309
  • 1310
  • 1311

Но для строк это нормальный порядок:

  • "1308"
  • "1309"
  • "131"
  • "1310"

В Firebase и, насколько я знаю, нет операторов, позволяющих изменить это поведение.Вместо этого вам придется изменить данные, чтобы получить желаемое поведение.Поэтому сохраняйте значения в том порядке, в котором они вам нужны при лексикографической сортировке.Для чисел вы можете сделать это, заполнив их нулями:

  • "0131" // ноль, добавленный до
  • "0132" // ноль, добавленный до
  • ......
  • "1308"
  • "1309"
  • "1310"
  • "1311"

Чтобы упорядочить результаты, используйте следующий код:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference tableRef = rootRef.child("table");
Query query = tableRef.orderByChild("teamPoints");
query.addListenerForSingleValueEvent(/* ... */);

Я пропустил это, но в соответствии с комментарием @ FrankvanPuffelen, пожалуйста, смотрите пост, в котором объясняется, как вы можете изменить порядок.

...