Realized Masterdetail
continuous-integration/drone/push Build is passing Details

Masterdetail_Next_Step
Emre KARTAL 2 years ago
parent 284d3b564d
commit ea3cde21a0

@ -138,6 +138,7 @@ Team --> "-area" Area
Match --> "-HomeTeam" Team
Match --> "-AwayTeam" Team
Match --> "-competition" Competition
Competition --> "-area" Area
Competition --> "-currentSeason" Season

@ -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'

@ -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<Match> = parent.matchList

@ -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<Match> {
TODO("Not yet implemented")
}
override fun getItems(): List<Match> {
TODO("Not yet implemented")

@ -17,7 +17,12 @@ interface PeopleManager : GenericDataManager<Personne> {
fun getItemsByName(substring: String): List<Personne>
}
interface MatchesManager : GenericDataManager<Match>
interface MatchesManager : GenericDataManager<Match> {
fun getNbItemsByCompetition(substring: String): Int
fun getItemsByCompetition(substring: String): List<Match>
}
interface CompetitionsManager : GenericDataManager<Competition> {
fun getItemsByName(substring: String): List<Competition>

@ -8,5 +8,6 @@ class Match(
val awayTeam: Team,
val date: Calendar,
val status: String,
val score: Score
val score: Score,
val competition: Competition
)

@ -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<ImageButton>(R.id.buttonExit)
val imageHeader = view.findViewById<ImageView>(R.id.imageDetail)
val titleHeader = view.findViewById<TextView>(R.id.title)
val nbMatches = view.findViewById<TextView>(R.id.nbMatches)
val dateEnd = view.findViewById<TextView>(R.id.dateEnd)
val dateStart = view.findViewById<TextView>(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<RecyclerView>(R.id.listRecentsMatches)
with(recyclerViewMatches) {
layoutManager = LinearLayoutManager(view.context)
adapter = MatchesAdapter(
(activity as MainActivity).manager.matchesMgr.getItemsByCompetition(competition.name)
.toList().toTypedArray()
)
}
}
}

@ -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

@ -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

@ -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<Match>) :
RecyclerView.Adapter<MatchHolder>() {
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<Match>) :
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)

@ -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)
}

@ -5,17 +5,18 @@
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_width="350dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:background="@drawable/background"
android:gravity="center_vertical"
android:gravity="center"
android:orientation="vertical"
android:paddingHorizontal="20dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/DateCompetition"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
@ -23,9 +24,8 @@
android:ellipsize="end"
android:fontFamily="@font/mulish_bold"
android:maxLines="1"
android:text="Champions League - Groupe Stage: Matchay"
android:textColor="@color/title"
android:textSize="14sp"
android:textSize="15sp"
android:textStyle="bold" />
<LinearLayout

@ -119,12 +119,13 @@
android:paddingHorizontal="10dp">
<TextView
android:layout_width="wrap_content"
android:id="@+id/nbMatches"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:fontFamily="@font/mulish_bold"
android:maxLines="1"
android:text="14"
android:textAlignment="center"
android:textColor="@color/black"
android:textSize="26dp" />

Loading…
Cancel
Save