From ea3cde21a057b6563f4addfe21283e2026bb9af5 Mon Sep 17 00:00:00 2001 From: emkartal1 Date: Sat, 1 Apr 2023 18:01:07 +0200 Subject: [PATCH] Realized Masterdetail :white_check_mark: --- README.md | 1 + src/app/build.gradle | 1 + .../java/uca/iut/clermont/data/StubData.kt | 23 ++++++++++++++----- .../java/uca/iut/clermont/model/ApiManager.kt | 7 ++++++ .../uca/iut/clermont/model/DataManager.kt | 7 +++++- .../main/java/uca/iut/clermont/model/Match.kt | 3 ++- .../uca/iut/clermont/view/DetailFragment.kt | 22 ++++++++++++++++++ .../uca/iut/clermont/view/MainActivity.kt | 2 +- .../clermont/view/adapter/FavoritesAdapter.kt | 9 ++++---- .../clermont/view/adapter/MatchesAdapter.kt | 17 ++++++++++---- .../clermont/view/viewHolder/MatchHolder.kt | 3 +++ src/app/src/main/res/layout/cellule_match.xml | 8 +++---- .../src/main/res/layout/fragment_detail.xml | 5 ++-- 13 files changed, 83 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index cfec8c5..d72261b 100644 --- a/README.md +++ b/README.md @@ -138,6 +138,7 @@ Team --> "-area" Area Match --> "-HomeTeam" Team Match --> "-AwayTeam" Team +Match --> "-competition" Competition Competition --> "-area" Area Competition --> "-currentSeason" Season diff --git a/src/app/build.gradle b/src/app/build.gradle index 012d3ac..a0d5155 100644 --- a/src/app/build.gradle +++ b/src/app/build.gradle @@ -40,6 +40,7 @@ dependencies { //Glide implementation 'com.github.bumptech.glide:glide:4.12.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' + implementation 'com.caverock:androidsvg:1.4' implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.6.1' diff --git a/src/app/src/main/java/uca/iut/clermont/data/StubData.kt b/src/app/src/main/java/uca/iut/clermont/data/StubData.kt index bff247b..eb06041 100644 --- a/src/app/src/main/java/uca/iut/clermont/data/StubData.kt +++ b/src/app/src/main/java/uca/iut/clermont/data/StubData.kt @@ -258,7 +258,8 @@ class StubData : DataManager() { Calendar.getInstance() .apply { set(2022, random.nextInt(12), random.nextInt(28) + 1) }, "FINISHED", - Score(1, 1, "DRAW") + Score(1, 1, "DRAW"), + competitionList[1] ) ) matchList.add( @@ -269,7 +270,8 @@ class StubData : DataManager() { Calendar.getInstance() .apply { set(2022, random.nextInt(12), random.nextInt(28) + 1) }, "FINISHED", - Score(2, 0, "HOME_TEAM") + Score(2, 0, "HOME_TEAM"), + competitionList[0] ) ) matchList.add( @@ -280,7 +282,8 @@ class StubData : DataManager() { Calendar.getInstance() .apply { set(2022, random.nextInt(12), random.nextInt(28) + 1) }, "FINISHED", - Score(0, 4, "AWAY_TEAM") + Score(0, 4, "AWAY_TEAM"), + competitionList[0] ) ) matchList.add( @@ -291,7 +294,8 @@ class StubData : DataManager() { Calendar.getInstance() .apply { set(2023, random.nextInt(12), random.nextInt(28) + 1) }, "FINISHED", - Score(0, 1, "AWAY_TEAM") + Score(0, 1, "AWAY_TEAM"), + competitionList[0] ) ) matchList.add( @@ -302,7 +306,8 @@ class StubData : DataManager() { Calendar.getInstance() .apply { set(2023, random.nextInt(12), random.nextInt(28) + 1) }, "FINISHED", - Score(0, 0, "DRAW") + Score(0, 0, "DRAW"), + competitionList[1] ) ) matchList.add( @@ -313,7 +318,8 @@ class StubData : DataManager() { Calendar.getInstance() .apply { set(2023, random.nextInt(12), random.nextInt(28) + 1) }, "FINISHED", - Score(2, 0, "HOME_TEAM") + Score(2, 0, "HOME_TEAM"), + competitionList[0] ) ) } @@ -434,6 +440,11 @@ class StubData : DataManager() { } class StubMatchesManager(private val parent: StubData) : MatchesManager { + override fun getNbItemsByCompetition(substring: String) = + parent.matchList.filter { it.competition.name.contains(substring) }.count() + + override fun getItemsByCompetition(substring: String) = + parent.matchList.filter { it.competition.name.contains(substring) } override fun getItems(): List = parent.matchList diff --git a/src/app/src/main/java/uca/iut/clermont/model/ApiManager.kt b/src/app/src/main/java/uca/iut/clermont/model/ApiManager.kt index 758caa2..fa61f01 100644 --- a/src/app/src/main/java/uca/iut/clermont/model/ApiManager.kt +++ b/src/app/src/main/java/uca/iut/clermont/model/ApiManager.kt @@ -45,6 +45,13 @@ class ApiManager : DataManager() { } class ApiMatchesManager : MatchesManager { + override fun getNbItemsByCompetition(substring: String): Int { + TODO("Not yet implemented") + } + + override fun getItemsByCompetition(substring: String): List { + TODO("Not yet implemented") + } override fun getItems(): List { TODO("Not yet implemented") diff --git a/src/app/src/main/java/uca/iut/clermont/model/DataManager.kt b/src/app/src/main/java/uca/iut/clermont/model/DataManager.kt index d3d2140..264f18a 100644 --- a/src/app/src/main/java/uca/iut/clermont/model/DataManager.kt +++ b/src/app/src/main/java/uca/iut/clermont/model/DataManager.kt @@ -17,7 +17,12 @@ interface PeopleManager : GenericDataManager { fun getItemsByName(substring: String): List } -interface MatchesManager : GenericDataManager +interface MatchesManager : GenericDataManager { + fun getNbItemsByCompetition(substring: String): Int + + fun getItemsByCompetition(substring: String): List + +} interface CompetitionsManager : GenericDataManager { fun getItemsByName(substring: String): List diff --git a/src/app/src/main/java/uca/iut/clermont/model/Match.kt b/src/app/src/main/java/uca/iut/clermont/model/Match.kt index 930cbef..30b1dd1 100644 --- a/src/app/src/main/java/uca/iut/clermont/model/Match.kt +++ b/src/app/src/main/java/uca/iut/clermont/model/Match.kt @@ -8,5 +8,6 @@ class Match( val awayTeam: Team, val date: Calendar, val status: String, - val score: Score + val score: Score, + val competition: Competition ) \ No newline at end of file diff --git a/src/app/src/main/java/uca/iut/clermont/view/DetailFragment.kt b/src/app/src/main/java/uca/iut/clermont/view/DetailFragment.kt index b92e5c0..489f5b8 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/DetailFragment.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/DetailFragment.kt @@ -10,9 +10,12 @@ import android.widget.ImageView import android.widget.TextView import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide import uca.iut.clermont.R import uca.iut.clermont.model.Competition +import uca.iut.clermont.view.adapter.MatchesAdapter import java.text.SimpleDateFormat class DetailFragment : Fragment() { @@ -33,6 +36,8 @@ class DetailFragment : Fragment() { competition = (activity as MainActivity).manager.competitionsMgr.getItemById(id)!! initializeView(view) + initRecyclerView(view) + return view; } @@ -41,6 +46,7 @@ class DetailFragment : Fragment() { val buttonExit = view.findViewById(R.id.buttonExit) val imageHeader = view.findViewById(R.id.imageDetail) val titleHeader = view.findViewById(R.id.title) + val nbMatches = view.findViewById(R.id.nbMatches) val dateEnd = view.findViewById(R.id.dateEnd) val dateStart = view.findViewById(R.id.dateStart) @@ -72,6 +78,22 @@ class DetailFragment : Fragment() { formattedDate = formatter.format(date.time) dateStart.text = formattedDate + + nbMatches.text = + (activity as MainActivity).manager.matchesMgr.getNbItemsByCompetition(competition.name) + .toString() } + + private fun initRecyclerView(view: View) { + val recyclerViewMatches = view.findViewById(R.id.listRecentsMatches) + with(recyclerViewMatches) { + layoutManager = LinearLayoutManager(view.context) + adapter = MatchesAdapter( + (activity as MainActivity).manager.matchesMgr.getItemsByCompetition(competition.name) + .toList().toTypedArray() + ) + } + + } } \ No newline at end of file diff --git a/src/app/src/main/java/uca/iut/clermont/view/MainActivity.kt b/src/app/src/main/java/uca/iut/clermont/view/MainActivity.kt index 6274ae5..3dcb5af 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/MainActivity.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/MainActivity.kt @@ -43,8 +43,8 @@ class MainActivity : AppCompatActivity() { supportActionBar?.hide() manager.initTeams() - manager.initMatches() manager.initCompetitions() + manager.initMatches() val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragment) as NavHostFragment diff --git a/src/app/src/main/java/uca/iut/clermont/view/adapter/FavoritesAdapter.kt b/src/app/src/main/java/uca/iut/clermont/view/adapter/FavoritesAdapter.kt index 8863c0d..95c6edd 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/adapter/FavoritesAdapter.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/adapter/FavoritesAdapter.kt @@ -34,11 +34,10 @@ class FavoritesAdapter( } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FavoriteHolder { - return FavoriteHolder( - LayoutInflater.from(parent.context).inflate(R.layout.cellule_favorite, parent, false) - ) - } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = FavoriteHolder( + LayoutInflater.from(parent.context).inflate(R.layout.cellule_favorite, parent, false) + ) + override fun onBindViewHolder(holder: FavoriteHolder, position: Int) { holder.textFavorites.text = favoriteCompetition[position].name diff --git a/src/app/src/main/java/uca/iut/clermont/view/adapter/MatchesAdapter.kt b/src/app/src/main/java/uca/iut/clermont/view/adapter/MatchesAdapter.kt index 2947e90..b49f0f1 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/adapter/MatchesAdapter.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/adapter/MatchesAdapter.kt @@ -7,14 +7,14 @@ import com.bumptech.glide.Glide import uca.iut.clermont.R import uca.iut.clermont.model.Match import uca.iut.clermont.view.viewHolder.MatchHolder +import java.text.SimpleDateFormat class MatchesAdapter(private val recentMatches: Array) : RecyclerView.Adapter() { - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MatchHolder { - return MatchHolder( - LayoutInflater.from(parent.context).inflate(R.layout.cellule_match, parent, false) - ) - } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = MatchHolder( + LayoutInflater.from(parent.context).inflate(R.layout.cellule_match, parent, false) + ) + override fun onBindViewHolder(holder: MatchHolder, position: Int) { holder.titleFirstTeam.text = recentMatches[position].homeTeam.name @@ -22,6 +22,13 @@ class MatchesAdapter(private val recentMatches: Array) : holder.scoreHomeTeam.text = recentMatches[position].score.home.toString() holder.scoreAwayTeam.text = recentMatches[position].score.away.toString() + var date = recentMatches[position].date + + var formatter = SimpleDateFormat("dd-MM-yyyy") + var formattedDate = formatter.format(date.time) + + holder.dateCompetition.text = recentMatches[position].competition.name + " : " + formattedDate + Glide.with(holder.itemView.context) .load(recentMatches[position].homeTeam.crest) .error(R.drawable.imagenotfound) diff --git a/src/app/src/main/java/uca/iut/clermont/view/viewHolder/MatchHolder.kt b/src/app/src/main/java/uca/iut/clermont/view/viewHolder/MatchHolder.kt index 511330c..cd63f51 100644 --- a/src/app/src/main/java/uca/iut/clermont/view/viewHolder/MatchHolder.kt +++ b/src/app/src/main/java/uca/iut/clermont/view/viewHolder/MatchHolder.kt @@ -13,6 +13,7 @@ class MatchHolder(view: View) : RecyclerView.ViewHolder(view) { val scoreAwayTeam: TextView val imageHomeTeam: ImageView val imageAwayTeam: ImageView + val dateCompetition: TextView init { titleFirstTeam = view.findViewById(R.id.TitleFirstTeam) @@ -21,6 +22,8 @@ class MatchHolder(view: View) : RecyclerView.ViewHolder(view) { scoreAwayTeam = view.findViewById(R.id.ScoreAwayTeam) imageHomeTeam = view.findViewById(R.id.ImageFirstTeam) imageAwayTeam = view.findViewById(R.id.ImageSecondTeam) + dateCompetition = view.findViewById(R.id.DateCompetition) + } diff --git a/src/app/src/main/res/layout/cellule_match.xml b/src/app/src/main/res/layout/cellule_match.xml index 9670074..1d3d235 100644 --- a/src/app/src/main/res/layout/cellule_match.xml +++ b/src/app/src/main/res/layout/cellule_match.xml @@ -5,17 +5,18 @@ android:layout_height="wrap_content">