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 a184ab4..52d0959 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 @@ -9,20 +9,17 @@ import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.navigation.Navigation; +import com.example.vdcscore.R; import com.example.vdcscore.databinding.FragmentClubDetailBinding; import com.example.vdcscore.models.Club; -import com.example.vdcscore.models.Player; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; -import java.util.ArrayList; -import java.util.List; - public class ClubDetailFragment extends Fragment { private FragmentClubDetailBinding binding; @@ -49,13 +46,18 @@ public class ClubDetailFragment extends Fragment { public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - binding.recyclerPlayers.setLayoutManager(new LinearLayoutManager(getContext())); - if (clubId != null) { - mDatabase = FirebaseDatabase.getInstance().getReference().child("clubes").child(clubId); // Updated to - // 'clubes' + mDatabase = FirebaseDatabase.getInstance().getReference().child("clubes").child(clubId); loadClubDetails(); } + + binding.btnPlayers.setOnClickListener(v -> { + if (clubId != null) { + Bundle bundle = new Bundle(); + bundle.putString("clubId", clubId); + Navigation.findNavController(view).navigate(R.id.action_nav_club_detail_to_nav_club_players, bundle); + } + }); } private void loadClubDetails() { @@ -67,12 +69,11 @@ public class ClubDetailFragment extends Fragment { binding.textDetailClubName.setText(club.getName()); binding.textDetailFoundation.setText(String.valueOf(club.getFoundationYear())); binding.textDetailPresident.setText(club.getPresident()); - binding.textDetailStadium.setText(club.getStadium()); binding.textDetailAddress.setText(club.getAddress()); + // binding.textDetailStadium.setText(club.getStadium()); // Hidden for now - List playerList = club.getPlayersList(); - PlayerAdapter adapter = new PlayerAdapter(playerList); - binding.recyclerPlayers.setAdapter(adapter); + // Load Logo (Default for now as requested) + binding.imageDetailLogo.setImageResource(R.mipmap.ic_launcher_round); } } diff --git a/app/src/main/java/com/example/vdcscore/ui/clubs/ClubPlayersFragment.java b/app/src/main/java/com/example/vdcscore/ui/clubs/ClubPlayersFragment.java new file mode 100644 index 0000000..7aa06fc --- /dev/null +++ b/app/src/main/java/com/example/vdcscore/ui/clubs/ClubPlayersFragment.java @@ -0,0 +1,101 @@ +package com.example.vdcscore.ui.clubs; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.example.vdcscore.databinding.FragmentClubPlayersBinding; +import com.example.vdcscore.models.Club; +import com.example.vdcscore.models.Player; +import com.google.firebase.database.DataSnapshot; +import com.google.firebase.database.DatabaseError; +import com.google.firebase.database.DatabaseReference; +import com.google.firebase.database.FirebaseDatabase; +import com.google.firebase.database.ValueEventListener; + +import java.util.ArrayList; +import java.util.List; + +public class ClubPlayersFragment extends Fragment { + + private FragmentClubPlayersBinding binding; + private DatabaseReference mDatabase; + private String clubId; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + clubId = getArguments().getString("clubId"); + } + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + binding = FragmentClubPlayersBinding.inflate(inflater, container, false); + return binding.getRoot(); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + binding.recyclerPlayersList.setLayoutManager(new LinearLayoutManager(getContext())); + binding.progressBarPlayers.setVisibility(View.VISIBLE); + + if (clubId != null) { + mDatabase = FirebaseDatabase.getInstance().getReference().child("clubes").child(clubId); + loadPlayers(); + } else { + binding.progressBarPlayers.setVisibility(View.GONE); + binding.textNoPlayers.setVisibility(View.VISIBLE); + binding.textNoPlayers.setText("Erro: Clube não identificado."); + } + } + + private void loadPlayers() { + mDatabase.addListenerForSingleValueEvent(new ValueEventListener() { + @Override + public void onDataChange(@NonNull DataSnapshot snapshot) { + Club club = snapshot.getValue(Club.class); + binding.progressBarPlayers.setVisibility(View.GONE); + + if (club != null) { + List playerList = club.getPlayersList(); + if (playerList != null && !playerList.isEmpty()) { + PlayerAdapter adapter = new PlayerAdapter(playerList); + binding.recyclerPlayersList.setAdapter(adapter); + binding.textNoPlayers.setVisibility(View.GONE); + } else { + binding.textNoPlayers.setVisibility(View.VISIBLE); + } + } else { + binding.textNoPlayers.setVisibility(View.VISIBLE); + } + } + + @Override + public void onCancelled(@NonNull DatabaseError error) { + if (getContext() != null) { + Toast.makeText(getContext(), "Failed to load players.", Toast.LENGTH_SHORT).show(); + } + binding.progressBarPlayers.setVisibility(View.GONE); + } + }); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } +} diff --git a/app/src/main/res/drawable/ic_calendar.xml b/app/src/main/res/drawable/ic_calendar.xml new file mode 100644 index 0000000..800f403 --- /dev/null +++ b/app/src/main/res/drawable/ic_calendar.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml new file mode 100644 index 0000000..e6dfeb4 --- /dev/null +++ b/app/src/main/res/drawable/ic_location.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_person.xml b/app/src/main/res/drawable/ic_person.xml new file mode 100644 index 0000000..6bdced2 --- /dev/null +++ b/app/src/main/res/drawable/ic_person.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_soccer.xml b/app/src/main/res/drawable/ic_soccer.xml new file mode 100644 index 0000000..556c39c --- /dev/null +++ b/app/src/main/res/drawable/ic_soccer.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/fragment_club_detail.xml b/app/src/main/res/layout/fragment_club_detail.xml index 71c791f..f6611a4 100644 --- a/app/src/main/res/layout/fragment_club_detail.xml +++ b/app/src/main/res/layout/fragment_club_detail.xml @@ -4,84 +4,229 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:fillViewport="true" + android:background="@color/white" tools:context=".ui.clubs.ClubDetailFragment"> - + android:padding="24dp"> + + + + + + + + + + + android:textColor="#0D47A1" + android:layout_marginTop="4dp" + app:layout_constraintTop_toBottomOf="@id/label_club" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> - + - + android:orientation="horizontal" + android:gravity="center_vertical" + android:layout_marginTop="24dp" + app:layout_constraintTop_toBottomOf="@id/text_detail_club_name" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"> - - + - - + + + - - + + + - + + android:orientation="horizontal" + android:gravity="center_vertical" + android:layout_marginTop="16dp" + app:layout_constraintTop_toBottomOf="@id/layout_president" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"> - + + + + + + + + + + + + + + + + + + + + + + + + + +