diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index b268ef3..ca16a99 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,6 +4,7 @@ diff --git a/app/src/main/java/com/example/vdcscore/ui/home/HomeFragment.java b/app/src/main/java/com/example/vdcscore/ui/home/HomeFragment.java index beb99a0..563130b 100644 --- a/app/src/main/java/com/example/vdcscore/ui/home/HomeFragment.java +++ b/app/src/main/java/com/example/vdcscore/ui/home/HomeFragment.java @@ -61,49 +61,45 @@ public class HomeFragment extends Fragment { } private void fetchStandings() { - // Remove previous listener from previous database path - if (mDatabase != null && mValueEventListener != null) { + mDatabase = FirebaseDatabase.getInstance().getReference("classificacoes").child(currentEscalao); + + // Remove previous listener to avoid duplicate data or leaks + if (mValueEventListener != null) { mDatabase.removeEventListener(mValueEventListener); } - mDatabase = FirebaseDatabase.getInstance().getReference("classificacoes").child(currentEscalao); - mValueEventListener = new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot snapshot) { - if (binding == null) return; - List teams = new ArrayList<>(); for (DataSnapshot postSnapshot : snapshot.getChildren()) { - try { - Team team = postSnapshot.getValue(Team.class); - if (team != null) { - if (team.getTeam_id() == null) { - team.setTeam_id(postSnapshot.getKey()); - } - teams.add(team); + Team team = postSnapshot.getValue(Team.class); + if (team != null) { + // If ID is missing, set it from the key (although team_id comes from json usually) + if (team.getTeam_id() == null) { + team.setTeam_id(postSnapshot.getKey()); } - } catch (Exception e) { - e.printStackTrace(); + teams.add(team); } } - // Sort properly - Collections.sort(teams, (t1, t2) -> { - if (t1.getPontos() != t2.getPontos()) { - return t2.getPontos() - t1.getPontos(); + // Sort properly (JSON might already be sorted by "posicao", but we sort by points and GD just in case) + Collections.sort(teams, new Comparator() { + @Override + public int compare(Team t1, Team t2) { + if (t1.getPontos() != t2.getPontos()) { + return t2.getPontos() - t1.getPontos(); // Descending points + } + return t2.getDiferenca_golos() - t1.getDiferenca_golos(); // Descending GD } - return t2.getDiferenca_golos() - t1.getDiferenca_golos(); }); - if (adapter != null) { - adapter.setTeams(teams); - } + adapter.setTeams(teams); } @Override public void onCancelled(@NonNull DatabaseError error) { - if (getContext() != null && binding != null) { + if (getContext() != null) { Toast.makeText(getContext(), "Erro ao carregar classificação: " + error.getMessage(), Toast.LENGTH_SHORT).show(); } diff --git a/app/src/main/java/com/example/vdcscore/ui/home/StandingsAdapter.java b/app/src/main/java/com/example/vdcscore/ui/home/StandingsAdapter.java index e7c8bab..4075ae1 100644 --- a/app/src/main/java/com/example/vdcscore/ui/home/StandingsAdapter.java +++ b/app/src/main/java/com/example/vdcscore/ui/home/StandingsAdapter.java @@ -39,7 +39,6 @@ public class StandingsAdapter extends RecyclerView.Adapter