Извлечение данных из Firebase, сопоставление с элементом в ArrayList и сортировка - PullRequest
0 голосов
/ 29 марта 2019

У меня есть ArrayList, который представляет разные команды в игре, и у них разные оценки. В Firebase я назначил каждой команде значение балла. Я не знаю, как вернуть эти значения баллов обратно в Android Studio, чтобы я мог отсортировать ArrayList.

До сих пор я пытался использовать Comparable, но я ничего не получил с этим. Я хотел использовать TreeMap, но я думаю, что ArrayList лучше всего подходит для ситуации.

database = FirebaseDatabase.getInstance();
        u1 = database.getReference("Hawkeyes");
        u2 = database.getReference("Lions");
        u3 = database.getReference("Tigers");
        sportTeams = new ArrayList<String>();

        sportTeams.add("Hawkeyes");
        sportTeams.add("Lions");
        sportTeams.add("Tigers");

В Firebase это выглядит так:

Соколиный Глаз - "20"

Львы - "64"

Тигры - "25"

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

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Вы можете использовать

Collections.sort(your_arrayList);
Collections.reverse(your_arrayList);

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

0 голосов
/ 29 марта 2019

Я интерпретировал ваш вопрос так: «Как мне прочитать данные из Firebase и отсортировать данные»

Вместо того, чтобы хранить ваши данные в том виде, в каком вы сейчас находитесь, вы можете захотеть сохранить их следующим образом (именно так обычно хранятся массивы в Firebase)

  • Случайный UID
    • Название команды
    • Оценка команды
  • Случайный UID
    • Название команды
    • Команда Оценка

и т. Д.

вы можете сгенерировать эти UID следующим способом:

.push().getKey()

в любой базе данных.

Чтобы ответить на ваш вопрос, вы можете сделать это с помощью (из документации Firebase):

ref.addValueEventListener(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    Post post = dataSnapshot.getValue(Post.class);
    System.out.println(post);
  }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    System.out.println("The read failed: " + databaseError.getCode());
  }
});

Значение dataSnapshot будет тем, что ваш объект DatabaseReference содержит в качестве снимка. Вы можете получить доступ к этим значениям как объектам с помощью метода .getValue (ClassName.class). Итак, если у вашего объекта Team есть свойство «name» и свойство «Score», вы должны получить эти значения как объект Team из Firebase.

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

Больше информации о сортах здесь:

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=2ahUKEwjO94DHm6bhAhUMP6wKHYQZCfMQwqsBMAF6BAgIEAQ&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DPgBzjlCcFvc&usg=AOvVaw2R-qjBfc9H9YEivdMxn7r_

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=18&cad=rja&uact=8&ved=2ahUKEwi-o8y7m6bhAhUqgK0KHbtKBIQQwqsBMBF6BAgLEAQ&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DOGzPmgsI-pQ&usg=AOvVaw0ExA52VpJJrxjnxfruRhy4

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