diff --git a/app/src/main/java/com/example/vdcscore/ui/clubs/ClubDetailFragment.java b/app/src/main/java/com/example/vdcscore/ui/clubs/ClubDetailFragment.java index 83ed0c5..26461df 100644 --- a/app/src/main/java/com/example/vdcscore/ui/clubs/ClubDetailFragment.java +++ b/app/src/main/java/com/example/vdcscore/ui/clubs/ClubDetailFragment.java @@ -56,17 +56,45 @@ public class ClubDetailFragment extends Fragment { if (statsTeam != null) { populateStats(statsTeam); setupComparison(statsTeam); + // Also load basic info metadata (president, etc.) + loadClubDetails(statsTeam.getTeam_id()); } else { Club clubeRecebido = (Club) getArguments().getSerializable("clube_selecionado"); if (clubeRecebido != null) { populateClubInfo(clubeRecebido); + } else if (clubId != null) { + loadClubDetails(Integer.parseInt(clubId)); } } } } + private void loadClubDetails(int clubId) { + DatabaseReference clubRef = FirebaseDatabase.getInstance().getReference("clubes").child(String.valueOf(clubId)); + clubRef.addListenerForSingleValueEvent(new ValueEventListener() { + @Override + public void onDataChange(@NonNull DataSnapshot snapshot) { + Club club = snapshot.getValue(Club.class); + if (club != null) { + populateClubInfo(club); + } + } + + @Override + public void onCancelled(@NonNull DatabaseError error) { + if (getContext() != null) { + Toast.makeText(getContext(), "Erro ao carregar detalhes do clube", Toast.LENGTH_SHORT).show(); + } + } + }); + } + private void populateStats(Team team) { binding.textDetailClubName.setText(team.getNome()); + binding.labelStats.setVisibility(View.VISIBLE); + binding.containerStats.setVisibility(View.VISIBLE); + binding.btnCompare.setVisibility(View.VISIBLE); + binding.textDetailPoints.setText(String.valueOf(team.getPontos())); binding.textDetailPlayed.setText(String.valueOf(team.getJogos())); binding.textDetailWon.setText(team.getVitorias() + "V"); @@ -98,11 +126,12 @@ public class ClubDetailFragment extends Fragment { private void populateClubInfo(Club club) { binding.textDetailClubName.setText(club.getName()); - // If coming from Clubs list, we don't have stats easily unless we fetch them or hide stats container. - // For now, hide stats if no statsTeam - binding.labelStats.setVisibility(View.GONE); - binding.containerStats.setVisibility(View.GONE); - binding.btnCompare.setVisibility(View.GONE); + + // Bind new club info fields + binding.textDetailPresident.setText(club.getPresident() != null && !club.getPresident().isEmpty() ? club.getPresident() : "---"); + binding.textDetailFoundation.setText(club.getFoundationYear() > 0 ? String.valueOf(club.getFoundationYear()) : "---"); + binding.textDetailStadium.setText(club.getStadium() != null && !club.getStadium().isEmpty() ? club.getStadium() : "---"); + binding.textDetailAddress.setText(club.getAddress() != null && !club.getAddress().isEmpty() ? club.getAddress() : "---"); if (getContext() != null) { Glide.with(this) diff --git a/app/src/main/java/com/example/vdcscore/ui/gallery/Match.java b/app/src/main/java/com/example/vdcscore/ui/gallery/Match.java index d04f31f..05cec12 100644 --- a/app/src/main/java/com/example/vdcscore/ui/gallery/Match.java +++ b/app/src/main/java/com/example/vdcscore/ui/gallery/Match.java @@ -45,6 +45,16 @@ public class Match { this.homeName = homeName; } + @PropertyName("equipa_casa_nome") + public void setEquipaCasaNome(String homeName) { + this.homeName = homeName; + } + + @PropertyName("home_team_name") + public void setHomeTeamName(String homeName) { + this.homeName = homeName; + } + @PropertyName("away_nome") public String getAwayName() { return awayName; @@ -65,6 +75,16 @@ public class Match { this.awayName = awayName; } + @PropertyName("equipa_fora_nome") + public void setEquipaForaNome(String awayName) { + this.awayName = awayName; + } + + @PropertyName("away_team_name") + public void setAwayTeamName(String awayName) { + this.awayName = awayName; + } + @PropertyName("home_golos") public Integer getHomeScore() { return homeScore; @@ -120,6 +140,16 @@ public class Match { this.homeLogo = homeLogo; } + @PropertyName("equipa_casa_logo") + public void setEquipaCasaLogo(String homeLogo) { + this.homeLogo = homeLogo; + } + + @PropertyName("home_team_logo") + public void setHomeTeamLogo(String homeLogo) { + this.homeLogo = homeLogo; + } + @PropertyName("away_logo") public String getAwayLogo() { return awayLogo; @@ -135,6 +165,16 @@ public class Match { this.awayLogo = awayLogo; } + @PropertyName("equipa_fora_logo") + public void setEquipaForaLogo(String awayLogo) { + this.awayLogo = awayLogo; + } + + @PropertyName("away_team_logo") + public void setAwayTeamLogo(String awayLogo) { + this.awayLogo = awayLogo; + } + @PropertyName("campo") public String getStadium() { return stadium; diff --git a/app/src/main/java/com/example/vdcscore/ui/gallery/MatchesAdapter.java b/app/src/main/java/com/example/vdcscore/ui/gallery/MatchesAdapter.java index 1ba6798..542c4d4 100644 --- a/app/src/main/java/com/example/vdcscore/ui/gallery/MatchesAdapter.java +++ b/app/src/main/java/com/example/vdcscore/ui/gallery/MatchesAdapter.java @@ -50,15 +50,19 @@ public class MatchesAdapter extends RecyclerView.Adapter + + + + + diff --git a/app/src/main/res/drawable/bg_match_item.xml b/app/src/main/res/drawable/bg_match_item.xml new file mode 100644 index 0000000..a81518a --- /dev/null +++ b/app/src/main/res/drawable/bg_match_item.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_club_placeholder.xml b/app/src/main/res/drawable/ic_club_placeholder.xml new file mode 100644 index 0000000..84dfdcb --- /dev/null +++ b/app/src/main/res/drawable/ic_club_placeholder.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/fragment_club_detail.xml b/app/src/main/res/layout/fragment_club_detail.xml index b3dfc8e..61e5729 100644 --- a/app/src/main/res/layout/fragment_club_detail.xml +++ b/app/src/main/res/layout/fragment_club_detail.xml @@ -61,6 +61,177 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -80,6 +252,7 @@ android:layout_height="wrap_content" android:orientation="vertical" android:layout_marginTop="16dp" + android:visibility="gone" app:layout_constraintTop_toBottomOf="@id/label_stats" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"> @@ -320,6 +493,7 @@ app:cornerRadius="12dp" android:backgroundTint="#FFC107" android:textColor="@color/black" + android:visibility="gone" app:layout_constraintTop_toBottomOf="@id/container_stats" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> diff --git a/app/src/main/res/layout/item_match.xml b/app/src/main/res/layout/item_match.xml index 09fd082..b8d8b3f 100644 --- a/app/src/main/res/layout/item_match.xml +++ b/app/src/main/res/layout/item_match.xml @@ -4,16 +4,17 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="16dp" - android:layout_marginVertical="8dp" - app:cardCornerRadius="12dp" - app:cardElevation="4dp" + android:layout_marginVertical="10dp" + app:cardBackgroundColor="@color/white" + app:cardCornerRadius="16dp" + app:cardElevation="6dp" app:strokeWidth="0dp"> + android:padding="16dp"> + android:layout_marginBottom="12dp"> + android:textStyle="bold" + android:letterSpacing="0.05" /> + android:textColor="#5C6BC0" + android:textSize="11sp" + android:layout_marginTop="2dp" /> + android:background="#E0E0E0" + android:layout_gravity="center" + android:layout_marginBottom="16dp" /> @@ -74,12 +78,14 @@ android:id="@+id/text_home_team" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="8dp" + android:layout_marginTop="10dp" android:text="J.U. Mosteiró" - android:textColor="@color/text_primary" + android:textColor="#333333" android:textSize="13sp" android:textStyle="bold" - android:gravity="center" /> + android:gravity="center" + android:maxLines="2" + android:ellipsize="end" /> @@ -87,7 +93,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" - android:layout_marginHorizontal="16dp" + android:layout_marginHorizontal="8dp" android:orientation="horizontal"> @@ -125,8 +131,8 @@ @@ -135,12 +141,14 @@ android:id="@+id/text_away_team" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="8dp" + android:layout_marginTop="10dp" android:text="G.D.C. Rio Mau" - android:textColor="@color/text_primary" + android:textColor="#333333" android:textSize="13sp" android:textStyle="bold" - android:gravity="center" /> + android:gravity="center" + android:maxLines="2" + android:ellipsize="end" /> diff --git a/prompt.txt b/prompt.txt new file mode 100644 index 0000000..98ebe0e --- /dev/null +++ b/prompt.txt @@ -0,0 +1 @@ +estou a desenvolver um projeto que se trata de uma app android que tem como objetivo fazer o scraping de infomarção do campeonato inter freguesias de vila do conde. quero mostrar toda a informação possível, clubes e os seus dados, jogos, johadores, posições tabela classificativa, etc. já comecei a fazer o projeto. tenho estruturado em 2 projetos, um projeto em java para fazer o scrapping e envio dos dados para o firebase e outro projeto android que se alimenta dos dados do mesmo firebsae (realtime database). antes de avançar mais no projeto quero criar toda a documentação necessária para garantir que o projeto pode saltar de agente em agente de ia mas mantem o contexto. para tal quero utilziar ficheiros md. até agora não fiz nada disto. quero que faças uma análise dos 2 projetos e cries toda esta documentação. tem que estar descrito como funcionam, tecnologias, o estado, quero que seja sempre registado o progresso. antes de avancares quero que faças um plano para a documentação e me apresentes. estás na pasta onde está o android. antes desta pasta existe um apasta com o nome scrapper e contem o projeto java com o scrapper. \ No newline at end of file