Merge pull request 'Masterdetail_Next_Step' (#5) from Masterdetail_Next_Step into master
continuous-integration/drone/push Build is passing Details

Reviewed-on: #5
Gyroscope
Emre KARTAL 2 years ago
commit bdf2b2c7ef

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

@ -0,0 +1,123 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<JetCodeStyleSettings>
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<codeStyleSettings language="XML">
<option name="FORCE_REARRANGE_MODE" value="1" />
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>ANDROID_ATTRIBUTE_ORDER</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</codeStyleSettings>
</code_scheme>
</component>

@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
</GradleProjectSettings>
</option>
</component>
</project>

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>

@ -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]
)
)
}
@ -343,7 +349,7 @@ class StubData : DataManager() {
2,
"FC Barcelona",
"BAR",
"https://upload.wikimedia.org/wikipedia/fr/thumb/a/a1/Logo_FC_Barcelona.svg/1200px-Logo_FC_Barcelona.svg.png",
"https://crests.football-data.org/109.svg",
"Carrer d'Aristides Maillol, s/n, 08028 Barcelona, Spain",
"https://www.fcbarcelona.com/",
"1899",
@ -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
)

@ -5,13 +5,22 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageButton
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() {
private var isLiked = false
private lateinit var competition: Competition
override fun onCreateView(
inflater: LayoutInflater,
@ -21,8 +30,24 @@ class DetailFragment : Fragment() {
val view = inflater.inflate(R.layout.fragment_detail, container, false)
val id = arguments?.getInt("idItem")!!
competition = (activity as MainActivity).manager.competitionsMgr.getItemById(id)!!
initializeView(view)
initRecyclerView(view)
return view;
}
private fun initializeView(view: View) {
val button = view.findViewById<ImageButton>(R.id.buttonLike)
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)
buttonExit.setOnClickListener {
findNavController().navigate(R.id.favoriteFragment)
@ -30,11 +55,44 @@ class DetailFragment : Fragment() {
button.setOnClickListener {
isLiked = !isLiked
button.setImageResource(if (isLiked) R.drawable.full_like else R.drawable.empty_like)
}
return view;
Glide.with(view.context)
.load(competition.emblem)
.error(R.drawable.imagenotfound)
.into(imageHeader)
titleHeader.text = competition.name
var date = competition.currentSeason.endDate
var formatter = SimpleDateFormat("dd-MM-yyyy")
var formattedDate = formatter.format(date.time)
dateEnd.text = formattedDate
date = competition.currentSeason.startDate
formatter = SimpleDateFormat("dd-MM-yyyy")
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()
)
}
}
}

@ -24,8 +24,20 @@ class FavoriteFragment : Fragment(), FavoritesAdapter.OnItemClickListener {
): View? {
val view = inflater.inflate(R.layout.fragment_favorite, container, false)
var competitions = (activity as MainActivity).manager.competitionsMgr.getItems()
initRecyclerView(view, competitions, this)
initializeView(view)
return view
}
private fun navigate() {
findNavController().navigate(R.id.homeFragment)
}
private fun initializeView(view: View) {
var buttonHome = view.findViewById<ImageButton>(R.id.buttonHome)
val buttonTextFavorite = view.findViewById<Button>(R.id.buttonTextHome)
var buttonTextFavorite = view.findViewById<Button>(R.id.buttonTextHome)
buttonHome.setOnClickListener {
navigate()
@ -33,17 +45,14 @@ class FavoriteFragment : Fragment(), FavoritesAdapter.OnItemClickListener {
buttonTextFavorite.setOnClickListener {
navigate()
}
initRecyclerView(view, competitions, this)
return view
}
fun navigate() {
findNavController().navigate(R.id.homeFragment)
}
private fun initRecyclerView(view: View, favorites: List<Competition>, listener: FavoritesAdapter.OnItemClickListener) {
private fun initRecyclerView(
view: View,
favorites: List<Competition>,
listener: FavoritesAdapter.OnItemClickListener
) {
val recyclerViewFavorites = view.findViewById<RecyclerView>(R.id.listFavorites)
with(recyclerViewFavorites) {
layoutManager = LinearLayoutManager(view.context)

@ -43,13 +43,13 @@ class MainActivity : AppCompatActivity() {
supportActionBar?.hide()
manager.initTeams()
manager.initMatches()
manager.initCompetitions()
manager.initMatches()
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.fragment) as NavHostFragment
val navController = navHostFragment.navController
navHostFragment.navController
}

@ -0,0 +1,13 @@
package uca.iut.clermont.view
import com.bumptech.glide.annotation.GlideModule
import com.bumptech.glide.module.AppGlideModule
@GlideModule
class SampleGlideModule : AppGlideModule() {
override fun isManifestParsingEnabled(): Boolean {
return false
}
}

@ -1,11 +1,5 @@
package uca.iut.clermont.view
import android.animation.ObjectAnimator
import android.content.Context
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@ -17,15 +11,9 @@ import androidx.navigation.fragment.findNavController
import uca.iut.clermont.R
class StartFragment : Fragment(), SensorEventListener {
class StartFragment : Fragment() {
private lateinit var ball: ImageView
private lateinit var sensorManager: SensorManager
private lateinit var accelerometer: Sensor
private var lastX = 0f
private var lastY = 0f
private var lastZ = 0f
override fun onCreateView(
inflater: LayoutInflater,
@ -37,10 +25,6 @@ class StartFragment : Fragment(), SensorEventListener {
ball = view.findViewById(R.id.ball)
sensorManager = activity?.getSystemService(Context.SENSOR_SERVICE) as SensorManager
accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL)
val buttonFavorite = view.findViewById<ImageButton>(R.id.nextButton)
buttonFavorite.setOnClickListener {
@ -51,37 +35,4 @@ class StartFragment : Fragment(), SensorEventListener {
}
override fun onSensorChanged(event: SensorEvent) {
val x = event.values[0]
val y = event.values[1]
val z = event.values[2]
val angleX = x / 9.81f
val angleY = y / 9.81f
if (Math.abs(angleX) > 0.1) {
val deltaX = angleX * 20f * if (angleX > 0) 1 else -1
ObjectAnimator.ofFloat(ball, View.TRANSLATION_X, ball.x + deltaX).start()
ObjectAnimator.ofFloat(ball, View.ROTATION, angleX * 3400f).start()
}
lastX = x
lastY = y
lastZ = z
}
override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) {
}
override fun onResume() {
super.onResume()
sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL)
}
override fun onPause() {
super.onPause()
sensorManager.unregisterListener(this)
}
}

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 971 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 602 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 565 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 421 B

@ -9,13 +9,14 @@
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

@ -8,12 +8,14 @@
<ImageView
android:id="@+id/imageDetail"
android:layout_width="match_parent"
android:layout_width="200dp"
android:layout_height="0dp"
android:layout_marginTop="0dp"
android:layout_marginTop="30dp"
android:scaleType="centerCrop"
android:src="@drawable/ic_launcher_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_percent="0.25"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
@ -24,8 +26,8 @@
android:layout_marginTop="15dp"
android:background="@android:color/transparent"
android:src="@drawable/exit_button"
app:layout_constraintStart_toStartOf="@+id/imageDetail"
app:layout_constraintTop_toTopOf="@+id/imageDetail" />
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/buttonLike"
@ -35,17 +37,16 @@
android:layout_marginRight="15dp"
android:background="@android:color/transparent"
android:src="@drawable/empty_like"
app:layout_constraintEnd_toEndOf="@+id/imageDetail"
app:layout_constraintTop_toTopOf="@+id/imageDetail" />
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textViewRecentMatches"
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:fontFamily="@font/mulish_black"
android:text="CA Paranaense"
android:textColor="#FF2B2B"
android:textColor="@color/black"
android:textSize="25dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@ -62,7 +63,7 @@
android:textColor="@color/title"
android:textSize="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textViewRecentMatches" />
app:layout_constraintTop_toBottomOf="@+id/title" />
<LinearLayout
android:id="@+id/header"
@ -77,17 +78,17 @@
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="10dp">
<TextView
android:id="@+id/dateStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:fontFamily="@font/mulish_bold"
android:maxLines="2"
android:text="2023-04-15"
android:textAlignment="center"
android:textColor="@color/black"
android:textSize="20dp" />
@ -113,18 +114,20 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center"
android:orientation="vertical"
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="20dp" />
android:textSize="26dp" />
<View
android:layout_width="match_parent"
@ -148,17 +151,17 @@
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="10dp">
<TextView
android:id="@+id/dateEnd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:fontFamily="@font/mulish_bold"
android:maxLines="3"
android:text="2023-12-15"
android:textAlignment="center"
android:textColor="@color/black"
android:textSize="20dp" />

@ -98,7 +98,7 @@
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/listRecentsMatches"
android:layout_width="wrap_content"
android:layout_height="500dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textViewRecentMatches"

Loading…
Cancel
Save