diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index 7290d27c..b287ef2e 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -22,12 +22,7 @@
| Moh Faizan | Moh Faizan|
| Praneesh Sharma | Praneesh Sharma |
| Naman Bagdiya | NamanOG |
-
+| Kevin Malik Fajar | Kevin Malik Fajar |
| Jeelwin | Jeelwin |
-
-
| Marina J | marinajcs |
-
| Diapk Kurkute| dipak-01 |
-
-
diff --git a/Kotlin/PlayerPedia/.gitignore b/Kotlin/PlayerPedia/.gitignore
new file mode 100644
index 00000000..aa724b77
--- /dev/null
+++ b/Kotlin/PlayerPedia/.gitignore
@@ -0,0 +1,15 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
+local.properties
diff --git a/Kotlin/PlayerPedia/app/.gitignore b/Kotlin/PlayerPedia/app/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/build.gradle.kts b/Kotlin/PlayerPedia/app/build.gradle.kts
new file mode 100644
index 00000000..a82a2de3
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/build.gradle.kts
@@ -0,0 +1,61 @@
+plugins {
+ id("com.android.application")
+ id("org.jetbrains.kotlin.android")
+}
+
+android {
+ namespace = "com.vinz.playerpedia"
+ compileSdk = 33
+
+ defaultConfig {
+ applicationId = "com.vinz.playerpedia"
+ minSdk = 24
+ targetSdk = 33
+ versionCode = 1
+ versionName = "1.0"
+
+ testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
+ }
+
+ buildTypes {
+ release {
+ isMinifyEnabled = false
+ proguardFiles(
+ getDefaultProguardFile("proguard-android-optimize.txt"),
+ "proguard-rules.pro"
+ )
+ }
+ }
+
+ buildFeatures {
+ viewBinding = true
+ }
+
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_1_8
+ targetCompatibility = JavaVersion.VERSION_1_8
+ }
+ kotlinOptions {
+ jvmTarget = "1.8"
+ }
+}
+
+dependencies {
+
+ implementation("androidx.core:core-ktx:1.9.0")
+ implementation("androidx.appcompat:appcompat:1.6.1")
+ implementation("com.google.android.material:material:1.9.0")
+ implementation("androidx.constraintlayout:constraintlayout:2.1.4")
+ testImplementation("junit:junit:4.13.2")
+ androidTestImplementation("androidx.test.ext:junit:1.1.5")
+ androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
+
+ // glide
+ implementation("com.github.bumptech.glide:glide:4.16.0")
+
+ // navigation
+ val nav_version = "2.6.0"
+ implementation("androidx.navigation:navigation-fragment-ktx:$nav_version")
+ implementation("androidx.navigation:navigation-ui-ktx:$nav_version")
+
+}
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/proguard-rules.pro b/Kotlin/PlayerPedia/app/proguard-rules.pro
new file mode 100644
index 00000000..481bb434
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/androidTest/java/com/vinz/playerpedia/ExampleInstrumentedTest.kt b/Kotlin/PlayerPedia/app/src/androidTest/java/com/vinz/playerpedia/ExampleInstrumentedTest.kt
new file mode 100644
index 00000000..9ed3d0f4
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/androidTest/java/com/vinz/playerpedia/ExampleInstrumentedTest.kt
@@ -0,0 +1,24 @@
+package com.vinz.playerpedia
+
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+ @Test
+ fun useAppContext() {
+ // Context of the app under test.
+ val appContext = InstrumentationRegistry.getInstrumentation().targetContext
+ assertEquals("com.vinz.playerpedia", appContext.packageName)
+ }
+}
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/AndroidManifest.xml b/Kotlin/PlayerPedia/app/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..ef3855b7
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/AndroidManifest.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/activity/DetailActivity.kt b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/activity/DetailActivity.kt
new file mode 100644
index 00000000..8e7bab7f
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/activity/DetailActivity.kt
@@ -0,0 +1,58 @@
+package com.vinz.playerpedia.activity
+
+import android.content.Intent
+import android.net.Uri
+import android.os.Bundle
+import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
+import com.bumptech.glide.Glide
+import com.vinz.playerpedia.data.PlayerWordData
+import com.vinz.playerpedia.databinding.ActivityDetailBinding
+
+class DetailActivity : AppCompatActivity() {
+
+ private lateinit var binding: ActivityDetailBinding
+
+ @Suppress("DEPRECATION")
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityDetailBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ val player = intent.getParcelableExtra("player") as PlayerWordData
+
+ Glide.with(this)
+ .load(player.playerWordImageResourceId)
+ .into(binding.ivPlayer)
+
+ binding.tvPlayerName.text = player.playerWordName
+ binding.tvPlayerClub.text = player.playerWordClub
+ binding.tvPlayerPosition.text = player.playerWordPosition
+ binding.tvPlayerNationally.text = player.playerWordNationality
+ binding.tvPlayerDescription.text = player.playerWordDescription
+
+ binding.btnBack.setOnClickListener {
+ onBackPressed()
+ }
+
+ binding.btnSearchGoogle.setOnClickListener {
+ val playerName = player.playerWordName
+
+ // Buat URL pencarian Google dengan data player.playerWordName
+ val searchQuery = "https://www.google.com/search?q=${playerName}"
+
+ // Buat intent untuk membuka browser dengan URL pencarian Google
+ val intent = Intent(Intent.ACTION_VIEW, Uri.parse(searchQuery))
+
+ // Periksa apakah ada aplikasi browser yang dapat menangani intent ini
+ if (intent.resolveActivity(this.packageManager) != null) {
+ startActivity(intent)
+ } else {
+ // Jika tidak ada aplikasi browser yang dapat menangani intent ini
+ // Tampilkan pesan kesalahan atau lakukan tindakan lain sesuai kebutuhan Anda
+ // Misalnya, tampilkan pesan toast bahwa tidak ada browser yang tersedia.
+ Toast.makeText(this, "Tidak ada browser yang tersedia.", Toast.LENGTH_SHORT).show()
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/activity/MainActivity.kt b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/activity/MainActivity.kt
new file mode 100644
index 00000000..ab07e149
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/activity/MainActivity.kt
@@ -0,0 +1,66 @@
+package com.vinz.playerpedia.activity
+
+import android.content.Intent
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import androidx.navigation.findNavController
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.vinz.playerpedia.R
+import com.vinz.playerpedia.adapter.PlayerAdapter
+import com.vinz.playerpedia.data.PlayerDummyData
+import com.vinz.playerpedia.data.PlayerWordStart
+import com.vinz.playerpedia.databinding.ActivityMainBinding
+
+class MainActivity : AppCompatActivity() {
+
+ private lateinit var binding : ActivityMainBinding
+
+ private lateinit var playerAdapter: PlayerAdapter
+ private lateinit var recyclerView: RecyclerView
+
+ private var isLinearLayoutManager = true
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityMainBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ recyclerView = binding.rvWords
+ recyclerView.setHasFixedSize(true)
+ recyclerView.layoutManager = LinearLayoutManager(this)
+ playerAdapter = PlayerAdapter(PlayerDummyData.playerDummy)
+ recyclerView.adapter = playerAdapter
+
+ binding.btnChangeView.setOnClickListener {
+ isLinearLayoutManager = !isLinearLayoutManager
+ setLayout()
+ }
+
+ playerAdapter.setOnItemClickCallback(object : PlayerAdapter.OnItemClickCallback {
+ override fun onItemClicked(data: PlayerWordStart) {
+ // Tambahkan kode untuk membuka detail makanan
+ showSelectedWord(data)
+ }
+ })
+ }
+
+ private fun setLayout() {
+ if (isLinearLayoutManager) {
+ recyclerView.layoutManager = LinearLayoutManager(this)
+ binding.btnChangeView.setImageResource(R.drawable.ic_grid)
+ } else {
+ recyclerView.layoutManager = GridLayoutManager(this, 2)
+ binding.btnChangeView.setImageResource(R.drawable.ic_list)
+ }
+ }
+
+ private fun showSelectedWord(player: PlayerWordStart) {
+ val intent = Intent(this, PlayerDataActivity::class.java)
+ val playerLetterToFind = player.playerLetter
+ intent.putExtra("playerData", playerLetterToFind)
+ startActivity(intent)
+ }
+
+}
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/activity/PlayerDataActivity.kt b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/activity/PlayerDataActivity.kt
new file mode 100644
index 00000000..e4acc264
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/activity/PlayerDataActivity.kt
@@ -0,0 +1,56 @@
+package com.vinz.playerpedia.activity
+
+import android.content.Intent
+import android.os.Bundle
+import android.util.Log
+import androidx.appcompat.app.AppCompatActivity
+import androidx.navigation.findNavController
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.vinz.playerpedia.R
+import com.vinz.playerpedia.adapter.PlayerDataAdapter
+import com.vinz.playerpedia.data.PlayerDummyData
+import com.vinz.playerpedia.data.PlayerWordData
+import com.vinz.playerpedia.databinding.ActivityPlayerDataBinding
+
+class PlayerDataActivity : AppCompatActivity() {
+ private lateinit var binding: ActivityPlayerDataBinding
+
+ private lateinit var playerDataAdapter: PlayerDataAdapter
+ private lateinit var recyclerView: RecyclerView
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityPlayerDataBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ val playerLetter = intent.getStringExtra("playerData")
+
+ val filteredPlayers = PlayerDummyData.playerDummy.filter { playerWordStart ->
+ playerWordStart.playerLetter == playerLetter
+ }
+
+ recyclerView = binding.rvPlayerName
+ recyclerView.setHasFixedSize(true)
+ recyclerView.layoutManager = LinearLayoutManager(this)
+ playerDataAdapter = PlayerDataAdapter(filteredPlayers[0].playerWordList)
+ recyclerView.adapter = playerDataAdapter
+
+ playerDataAdapter.setOnItemClickCallback(object : PlayerDataAdapter.OnItemClickCallback {
+ override fun onItemClicked(data: PlayerWordData) {
+ // Tambahkan kode untuk membuka detail makanan
+ showSelectedPlayer(data)
+ }
+ })
+
+ binding.btnBack.setOnClickListener {
+ onBackPressed()
+ }
+ }
+
+ private fun showSelectedPlayer(player: PlayerWordData) {
+ val intent = Intent(this, DetailActivity::class.java)
+ intent.putExtra("player", player)
+ startActivity(intent)
+ }
+}
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/adapter/PlayerAdapter.kt b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/adapter/PlayerAdapter.kt
new file mode 100644
index 00000000..4ebf8ef9
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/adapter/PlayerAdapter.kt
@@ -0,0 +1,45 @@
+package com.vinz.playerpedia.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.google.android.material.textview.MaterialTextView
+import com.vinz.playerpedia.R
+import com.vinz.playerpedia.data.PlayerWordStart
+
+class PlayerAdapter(private val playerList: List) :
+ RecyclerView.Adapter() {
+
+ private lateinit var onItemClickCallback: OnItemClickCallback
+
+ fun setOnItemClickCallback(onItemClickCallback: OnItemClickCallback) {
+ this.onItemClickCallback = onItemClickCallback
+ }
+
+ interface OnItemClickCallback {
+ fun onItemClicked(data: PlayerWordStart)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ val view = LayoutInflater.from(parent.context).inflate(R.layout.item_player, parent, false)
+ return ViewHolder(view)
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ val player = playerList[position]
+ holder.word.text = player.playerLetter
+ holder.itemView.setOnClickListener {
+ onItemClickCallback.onItemClicked(playerList[position])
+ }
+ }
+
+ override fun getItemCount(): Int = playerList.size
+
+ class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+
+ val word: MaterialTextView = view.findViewById(R.id.word_title)
+
+ }
+}
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/adapter/PlayerDataAdapter.kt b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/adapter/PlayerDataAdapter.kt
new file mode 100644
index 00000000..3380e9e1
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/adapter/PlayerDataAdapter.kt
@@ -0,0 +1,46 @@
+package com.vinz.playerpedia.adapter
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.google.android.material.textview.MaterialTextView
+import com.vinz.playerpedia.R
+import com.vinz.playerpedia.data.PlayerWordData
+
+class PlayerDataAdapter(
+ private val playerList: List
+) :
+ RecyclerView.Adapter() {
+
+ private lateinit var onItemClickCallback: OnItemClickCallback
+
+ fun setOnItemClickCallback(onItemClickCallback: OnItemClickCallback) {
+ this.onItemClickCallback = onItemClickCallback
+ }
+
+ interface OnItemClickCallback {
+ fun onItemClicked(data: PlayerWordData)
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ val view = LayoutInflater.from(parent.context).inflate(R.layout.item_player, parent, false)
+ return ViewHolder(view)
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ val player = playerList[position]
+ holder.word.text = player.playerWordName
+ holder.itemView.setOnClickListener {
+ onItemClickCallback.onItemClicked(playerList[position])
+ }
+ }
+
+ override fun getItemCount(): Int = playerList.size
+
+ class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
+
+ val word: MaterialTextView = view.findViewById(R.id.word_title)
+
+ }
+}
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/data/PlayerDummyData.kt b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/data/PlayerDummyData.kt
new file mode 100644
index 00000000..9bbd4007
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/data/PlayerDummyData.kt
@@ -0,0 +1,181 @@
+package com.vinz.playerpedia.data
+
+object PlayerDummyData {
+
+ val playerDummy = listOf(
+ PlayerWordStart(
+ playerLetter = "A",
+ playerWordList = listOf(
+ PlayerWordData(
+ playerWordName = "Alessandro Del Piero",
+ playerWordClub = "Retired",
+ playerWordPosition = "Striker",
+ playerWordNationality = "Italy",
+ playerWordDescription = "Alessandro Del Piero, Ufficiale OMRI (Italian pronunciation: [alesˈsandro del ˈpjɛːro]; born 9 November 1974) is an Italian former professional footballer who mainly played as a deep-lying forward, although he was capable of playing in several offensive positions. Since 2015, he has worked as a pundit for Sky Sport Italia.",
+ playerWordImageResourceId = "https://img.okezone.com/content/2023/02/04/47/2759171/alasan-legenda-italia-alessandro-del-piero-ogah-injakkan-kaki-lagi-di-turin-markas-besar-juventus-AyqeUZ2Nm6.jpg"
+ ),
+ PlayerWordData(
+ playerWordName = "Andrea Pirlo",
+ playerWordClub = "Retired",
+ playerWordPosition = "Midfielder",
+ playerWordNationality = "Italy",
+ playerWordDescription = "Andrea Pirlo, Ufficiale OMRI (Italian pronunciation: [anˈdrɛːa ˈpirlo]; born 19 May 1979) is an Italian former professional footballer. Pirlo was usually deployed as a deep-lying playmaker in midfield for both his club and national teams and he is widely regarded as one of the greatest ever exponents of this position due to his vision, ball control, technique, creativity and passing ability, as well as for being a free-kick specialist.",
+ playerWordImageResourceId = "https://assets.goal.com/v3/assets/bltcc7a7ffd2fbf71f5/bltd799182d9400e441/629c51b0c7d7f330f2974e04/GettyImages-1318169707.jpg?auto=webp&format=pjpg&width=640&quality=60"
+ ),
+ PlayerWordData(
+ playerWordName = "Alessandro Nesta",
+ playerWordClub = "Retired",
+ playerWordPosition = "Defender",
+ playerWordNationality = "Italy",
+ playerWordDescription = "Alessandro Nesta (Italian pronunciation: [alesˈsandro ˈnɛsta]; born 19 March 1976) is an Italian professional football manager and former player who currently manages Serie B club Frosinone. Widely considered to be one of the best centre-backs of his time and also as one of the greatest defenders ever, he is best known for his pace, artistic tackles, elegance on the ball, distribution and tight marking of opponents.",
+ playerWordImageResourceId = "https://media.bolatimes.com/thumbs/2018/09/27/74940-alessandro-nesta-saat-berseragam-ac-milan-pasco-serinelliafp/730x480-img-74940-alessandro-nesta-saat-berseragam-ac-milan-pasco-serinelliafp.jpg"
+ ),
+ ),
+ ),
+ PlayerWordStart(
+ playerLetter = "B",
+ playerWordList = listOf(
+ PlayerWordData(
+ playerWordName = "Bastian Schweinsteiger",
+ playerWordClub = "Retired",
+ playerWordPosition = "Midfielder",
+ playerWordNationality = "Germany",
+ playerWordDescription = "Bastian Schweinsteiger (pronounced [ˈbasti̯an ˈʃvaɪ̯nʃtaɪ̯ɡɐ] (About this soundlisten); born 1 August 1984) is a German former professional footballer who usually played as a central midfielder. Earlier in his career, he primarily played as a wide midfielder. He spent 17 seasons at Bayern Munich, playing in exactly 500 matches across all competitions and scoring 68 goals. His honours at the club include eight Bundesliga titles, seven DFB-Pokal titles, a UEFA Champions League title, a FIFA Club World Cup title and two DFL-Supercups.",
+ playerWordImageResourceId = "https://www.rappler.com/tachyon/r3-assets/612F469A6EA84F6BAE882D2B94A4B421/img/D5427ADC66934E28B5BE9568CD8D404A/16123161_397909853884271_5882449631656280064_n.jpg?resize=1080%2C1080&zoom=1"
+ ),
+ PlayerWordData(
+ playerWordName = "Bixente Lizarazu",
+ playerWordClub = "Retired",
+ playerWordPosition = "Defender",
+ playerWordNationality = "France",
+ playerWordDescription = "Bixente Lizarazu (Basque: [biˈʃente lis̻aˈɾas̻u], French pronunciation: [biˈksɑ̃t lizaʁazu]; born 9 December 1969) is a French former professional footballer who played for Bordeaux and Bayern Munich, among other teams, as a left-back. He also had 97 caps for the French national team. With the French national team, Lizarazu won the 1998 FIFA World Cup, Euro 2000, and the 2001 FIFA Confederations Cup. He also won the Champions League in 2001 with Bayern Munich, and six Bundesliga titles.",
+ playerWordImageResourceId = "https://img.fcbayern.com/image/upload/t_cms-1x1-seo/v1601367867/cms/public/images/fcbayern-com/media/images/erlebniswelt/hall-of-fame-spielerbilder/bixentelizarazu.jpg"
+ ),
+ PlayerWordData(
+ playerWordName = "Bobby Charlton",
+ playerWordClub = "Retired",
+ playerWordPosition = "Midfielder",
+ playerWordNationality = "England",
+ playerWordDescription = "Sir Robert Charlton CBE (born 11 October 1937) is an English former footballer who played as a midfielder. He is regarded as one of the greatest players of all time, and was a member of the England team that won the 1966 FIFA World Cup, the year he also won the Ballon d'Or. He played almost all of his club football at Manchester United, where he became renowned for his attacking instincts and passing abilities from midfield and his ferocious long-range shot. He was also well known for his fitness and stamina, allowing him to dominate the pitch.",
+ playerWordImageResourceId = "https://cdn.britannica.com/49/219149-050-4268B1AB/British-football-player-Bobby-Charlton-1959.jpg"
+ ),
+ ),
+ ),
+ PlayerWordStart(
+ playerLetter = "C",
+ playerWordList = listOf(
+ PlayerWordData(
+ playerWordName = "Cafu",
+ playerWordClub = "Retired",
+ playerWordPosition = "Defender",
+ playerWordNationality = "Brazil",
+ playerWordDescription = "Marcos Evangelista de Morais (born 7 June 1970), known as Cafu [kaˈfu], is a Brazilian former professional footballer who played as a defender. With 142 appearances for the Brazil national team, he is the most internationally capped Brazilian player of all time. He represented his nation in four FIFA World Cups between 1994 and 2006, and is the only player to have appeared in three consecutive World Cup finals, winning the 1994 and 2002 editions of the tournament, the latter as his team's captain.",
+ playerWordImageResourceId = "https://i.pinimg.com/736x/9b/34/22/9b3422db1b5ad6fa0aa08289c05aa00a.jpg"
+ ),
+ PlayerWordData(
+ playerWordName = "Carles Puyol",
+ playerWordClub = "Retired",
+ playerWordPosition = "Defender",
+ playerWordNationality = "Spain",
+ playerWordDescription = "Carles Puyol Saforcada (Catalan pronunciation: [ˈkaɾləs puˈjɔl i safoɾˈkaða]; born 13 April 1978) is a Spanish retired professional footballer who played his entire career for Barcelona. Mainly a central defender, he could also play on either flank, mostly as a right back, and was regarded as one of the best defenders of his generation.",
+ playerWordImageResourceId = "https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Puyol2011.jpg/320px-Puyol2011.jpg"
+ ),
+ PlayerWordData(
+ playerWordName = "Cristiano Ronaldo",
+ playerWordClub = "Juventus",
+ playerWordPosition = "Forward",
+ playerWordNationality = "Portugal",
+ playerWordDescription = "Cristiano Ronaldo dos Santos Aveiro GOIH ComM (Portuguese pronunciation: [kɾiʃˈtjɐnu ʁɔˈnaɫdu]; born 5 February 1985) is a Portuguese professional footballer who plays as a forward for Serie A club Juventus and captains the Portugal national team. Often considered the best player in the world and widely regarded as one of the greatest players of all time, Ronaldo has won five Ballon d'Or awards[note 3] and four European Golden Shoes, both of which are records for a European player. He has won 32 major trophies in his career, including seven league titles, five UEFA Champions Leagues, one UEFA European Championship, and one UEFA Nations League title. Ronaldo holds the records for the most goals (134) and assists (41) in the history of the UEFA Champions League. He is one of the few recorded players to have made over 1,100 professional career appearances and has scored over 780 senior career goals for club and country.",
+ playerWordImageResourceId = "https://upload.wikimedia.org/wikipedia/commons/2/23/Cristiano_Ronaldo_WC2022_-_01.jpg"
+ ),
+ ),
+ ),
+ PlayerWordStart(
+ playerLetter = "D",
+ playerWordList = listOf(
+ PlayerWordData(
+ playerWordName = "David Beckham",
+ playerWordClub = "Retired",
+ playerWordPosition = "Midfielder",
+ playerWordNationality = "England",
+ playerWordDescription = "David Robert Joseph Beckham OBE (UK: /ˈbɛkəm/; born 2 May 1975) is an English former professional footballer, the current president & co-owner of Inter Miami CF and co-owner of Salford City. He played for Manchester United, Preston North End, Real Madrid, Milan, LA Galaxy, Paris Saint-Germain and the England national team, for which he held the appearance record for an outfield player until 2016. He is the first English player to win league titles in four countries: England, Spain, the United States and France. He retired in May 2013 after a 20-year career, during which he won 19 major trophies.",
+ playerWordImageResourceId = "https://assets.goal.com/v3/assets/bltcc7a7ffd2fbf71f5/blt7a68e4079bfc600d/60dbab625543520fcbc270de/3e947186d512164cf8dbe0987a865dd2b714eea6.png?auto=webp&format=pjpg&width=3840&quality=60"
+ ),
+ PlayerWordData(
+ playerWordName = "Diego Maradona",
+ playerWordClub = "Retired",
+ playerWordPosition = "Forward",
+ playerWordNationality = "Argentina",
+ playerWordDescription = "Diego Armando Maradona (30 October 1960 – 25 November 2020) was an Argentine professional football player and manager. Widely regarded as one of the greatest players of all time, he was one of the two joint winners of the FIFA Player of the 20th Century award. Maradona's vision, passing, ball control, and dribbling skills were combined with his small stature, which gave him a low centre of gravity allowing him to manoeuvre better than most other football players; he would often dribble past multiple opposing players on a run. His presence and leadership on the field had a great effect on his team's general performance, while he would often be singled out by the opposition. In addition to his creative abilities, he possessed an eye for goal and was known to be a free-kick specialist. A precocious talent, Maradona was given the nickname \"El Pibe de Oro\" (\"The Golden Boy\"), a name that stuck with him throughout his career.",
+ playerWordImageResourceId = "https://upload.wikimedia.org/wikipedia/commons/2/2c/Maradona-Mundial_86_con_la_copa.JPG"
+ ),
+ PlayerWordData(
+ playerWordName = "Didier Drogba",
+ playerWordClub = "Retired",
+ playerWordPosition = "Forward",
+ playerWordNationality = "Ivory Coast",
+ playerWordDescription = "Didier Yves Drogba Tébily (French pronunciation: [didje dʁɔɡba]; born 11 March 1978) is an Ivorian retired professional footballer who played as a striker. He is the all-time top scorer and former captain of the Ivory Coast national team. He is best known for his career at Chelsea, for whom he has scored more goals than any other foreign player and is currently the club's fourth highest goal scorer of all time. He has been named African Footballer of the Year twice, winning the accolade in 2006 and 2009.",
+ playerWordImageResourceId = "https://img2.beritasatu.com/cache/beritasatu/960x620-3/1419605499.jpg"
+ ),
+ ),
+ ),
+ PlayerWordStart(
+ playerLetter = "E",
+ playerWordList = listOf(
+ PlayerWordData(
+ playerWordName = "Eden Hazard",
+ playerWordClub = "Real Madrid",
+ playerWordPosition = "Forward",
+ playerWordNationality = "Belgium",
+ playerWordDescription = "Eden Michael Hazard (French pronunciation: [edɛn azaʁ]; born 7 January 1991) is a Belgian professional footballer who plays as a winger or attacking midfielder for Spanish club Real Madrid and captains the Belgium national team. Known for his creativity, speed, dribbling and passing, Hazard is considered one of the best players in the world.",
+ playerWordImageResourceId = "https://assets.goal.com/v3/assets/bltcc7a7ffd2fbf71f5/blt2028b0ea8d7eb361/64f028d89a17170b3081c3ad/Eden_Hazard_Real_Madrid_2021-22.jpg?auto=webp&format=pjpg&width=3840&quality=60"
+ ),
+ PlayerWordData(
+ playerWordName = "Edinson Cavani",
+ playerWordClub = "Manchester United",
+ playerWordPosition = "Forward",
+ playerWordNationality = "Uruguay",
+ playerWordDescription = "Edinson Roberto Cavani Gómez (Spanish pronunciation: [ˈeðinsoŋ kaˈβani]; born 14 February 1987) is a Uruguayan professional footballer who plays as a striker for Premier League club Manchester United and the Uruguay national team. Cavani began his career playing for Danubio in Montevideo, where he played for two years, before moving to Italian side Palermo in 2007. He spent four seasons at the club, scoring 34 goals in 109 league appearances. In 2010, Cavani signed for Napoli, who signed him on an initial loan deal before buying him for a total fee €17 million. In the 2011–12 season, he won his first club honour, the Coppa Italia, in which he was top scorer with five goals. With Napoli, Cavani went on to score 33 goals each in his first two seasons, followed by 38 goals in his third season, where he also finished as Serie A top scorer with 29 league goals.",
+ playerWordImageResourceId = "https://upload.wikimedia.org/wikipedia/commons/8/88/Edinson_Cavani_2018.jpg"
+ ),
+ PlayerWordData(
+ playerWordName = "Eric Cantona",
+ playerWordClub = "Retired",
+ playerWordPosition = "Forward",
+ playerWordNationality = "France",
+ playerWordDescription = "Éric Daniel Pierre Cantona (French pronunciation: [eʁik kɑ̃tona]; born 24 May 1966) is a French actor, director, producer, and former professional footballer. He played for Auxerre, Martigues, Marseille, Bordeaux, Montpellier, Nîmes and Leeds United before ending his career at Manchester United, where he won four Premier League titles in five years and two League and FA Cup Doubles. Cantona is often regarded as having played a key role in the revival of Manchester United as a footballing force in the 1990s and he enjoys iconic status at the club. He wore the number 7 shirt at Manchester United with his trademark upturned collar.",
+ playerWordImageResourceId = "https://assets.goal.com/v3/assets/bltcc7a7ffd2fbf71f5/bltf70c159c40e75dd4/60da77702e95e10f21ed1153/a5ffa578433a5d7b0ff48e50b9a072f715d4b92d.jpg?auto=webp&format=pjpg&width=3840&quality=60"
+ ),
+ ),
+ ),
+ PlayerWordStart(
+ playerLetter = "F",
+ playerWordList = listOf(
+ PlayerWordData(
+ playerWordName = "Fabio Cannavaro",
+ playerWordClub = "Retired",
+ playerWordPosition = "Defender",
+ playerWordNationality = "Italy",
+ playerWordDescription = "Fabio Cannavaro (Italian pronunciation: [ˈfaːbjo kannaˈvaːro]; born 13 September 1973) is an Italian former professional footballer and current manager of Chinese club Guangzhou. Cannavaro is considered to be one of the greatest defenders of all time and was given the name \"Muro di Berlino\" (The Berlin Wall) by Italian supporters. He spent the majority of his career in Italy. He started his career at Napoli before spending seven years at Parma, with whom he won two Coppa Italia titles, the 1999 Supercoppa Italiana, and the 1999 UEFA Cup. After spells at Internazionale and Juventus, he transferred from Juventus to Real Madrid in 2006, with whom he won consecutive La Liga titles in 2007 and 2008. After returning to Juventus for one season in 2009–10, he joined Al-Ahli in Dubai, where he retired from football in 2011 after an injury-troubled season.",
+ playerWordImageResourceId = "https://m.media-amazon.com/images/M/MV5BNGNlMmU1ZTEtYzNhZi00NDhjLWJlMDMtOGEwM2VkYTA4ZWQyXkEyXkFqcGdeQXVyMjUyNDk2ODc@._V1_.jpg"
+ ),
+ PlayerWordData(
+ playerWordName = "Fernando Torres",
+ playerWordClub = "Retired",
+ playerWordPosition = "Forward",
+ playerWordNationality = "Spain",
+ playerWordDescription = "Fernando José Torres Sanz (Spanish pronunciation: [feɾˈnando ˈtores]; born 20 March 1984) is a Spanish former professional footballer who played as a striker. Torres started his career with Atlético Madrid, progressing through their youth system to the first-team squad. He made his first-team debut in 2001 and finished his time at the club having scored 75 goals in 174 La Liga appearances. Prior to his La Liga debut, Torres played two seasons in the Segunda División for AtLETico, making 40 appearances and scoring seven goals. He joined Premier League club Liverpool in 2007, after signing for a club record transfer fee. He marked his first season at Anfield by being Liverpool's first player since Robbie Fowler in the 1995–96 season to score more than 20 league goals in a season. The most prolific goalscoring spell of his career, he became the fastest player in Liverpool history to score 50 league goals.",
+ playerWordImageResourceId = "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Fernando_Torres_DEP-ATM_024_1200.jpg/640px-Fernando_Torres_DEP-ATM_024_1200.jpg"
+ ),
+ PlayerWordData(
+ playerWordName = "Francesco Totti",
+ playerWordClub = "Retired",
+ playerWordPosition = "Forward",
+ playerWordNationality = "Italy",
+ playerWordDescription = "Francesco Totti Ufficiale OMRI[3][4] (Italian pronunciation: [franˈtʃesko ˈtɔtti];[5][6] born 27 September 1976) is an Italian former professional footballer who played solely for Roma and the Italy national team. A creative offensive playmaker who could play as an attacking midfielder and as a forward (second striker, lone striker, or winger), renowned for his vision, technique, and goalscoring ability, Totti is considered to be one of the best players of his generation.",
+ playerWordImageResourceId = "https://upload.wikimedia.org/wikipedia/commons/4/42/KL-2018_%284%29.jpg"
+ ),
+ ),
+ ),
+ )
+}
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/data/PlayerWordData.kt b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/data/PlayerWordData.kt
new file mode 100644
index 00000000..a2609edc
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/data/PlayerWordData.kt
@@ -0,0 +1,45 @@
+package com.vinz.playerpedia.data
+
+import android.os.Parcel
+import android.os.Parcelable
+
+data class PlayerWordData(
+ val playerWordName: String,
+ val playerWordClub: String,
+ val playerWordPosition: String,
+ val playerWordNationality: String,
+ val playerWordDescription: String,
+ val playerWordImageResourceId: String,
+) : Parcelable {
+ constructor(parcel: Parcel) : this(
+ parcel.readString()!!,
+ parcel.readString()!!,
+ parcel.readString()!!,
+ parcel.readString()!!,
+ parcel.readString()!!,
+ parcel.readString()!!
+ )
+
+ override fun writeToParcel(parcel: Parcel, flags: Int) {
+ parcel.writeString(playerWordName)
+ parcel.writeString(playerWordClub)
+ parcel.writeString(playerWordPosition)
+ parcel.writeString(playerWordNationality)
+ parcel.writeString(playerWordDescription)
+ parcel.writeString(playerWordImageResourceId)
+ }
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ companion object CREATOR : Parcelable.Creator {
+ override fun createFromParcel(parcel: Parcel): PlayerWordData {
+ return PlayerWordData(parcel)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+}
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/data/PlayerWordStart.kt b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/data/PlayerWordStart.kt
new file mode 100644
index 00000000..11b04ce8
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/data/PlayerWordStart.kt
@@ -0,0 +1,33 @@
+package com.vinz.playerpedia.data
+
+import android.os.Parcelable
+
+data class PlayerWordStart(
+ val playerLetter: String,
+ val playerWordList: List
+) : Parcelable {
+ constructor(parcel: android.os.Parcel) : this(
+ parcel.readString()!!,
+ parcel.createTypedArrayList(PlayerWordData)!!
+ ) {
+ }
+
+ override fun writeToParcel(parcel: android.os.Parcel, flags: Int) {
+ parcel.writeString(playerLetter)
+ parcel.writeTypedList(playerWordList)
+ }
+
+ override fun describeContents(): Int {
+ return 0
+ }
+
+ companion object CREATOR : Parcelable.Creator {
+ override fun createFromParcel(parcel: android.os.Parcel): PlayerWordStart {
+ return PlayerWordStart(parcel)
+ }
+
+ override fun newArray(size: Int): Array {
+ return arrayOfNulls(size)
+ }
+ }
+}
diff --git a/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/fragment/DetailFragment.kt b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/fragment/DetailFragment.kt
new file mode 100644
index 00000000..3974611b
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/fragment/DetailFragment.kt
@@ -0,0 +1,75 @@
+package com.vinz.playerpedia.fragment
+
+import android.content.Intent
+import android.net.Uri
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Toast
+import androidx.fragment.app.Fragment
+import com.bumptech.glide.Glide
+import com.vinz.playerpedia.data.PlayerWordData
+import com.vinz.playerpedia.databinding.FragmentDetailBinding
+
+class DetailFragment : Fragment() {
+
+ private var _binding: FragmentDetailBinding? = null
+ private val binding get() = _binding!!
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ // Inflate the layout for this fragment
+ _binding = FragmentDetailBinding.inflate(inflater, container, false)
+ return binding.root
+ }
+
+ @Suppress("DEPRECATION")
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ val player = arguments?.getParcelable("player") as PlayerWordData
+
+ Glide.with(requireContext())
+ .load(player.playerWordImageResourceId)
+ .into(binding.ivPlayer)
+
+ binding.tvPlayerName.text = player.playerWordName
+ binding.tvPlayerClub.text = player.playerWordClub
+ binding.tvPlayerPosition.text = player.playerWordPosition
+ binding.tvPlayerNationally.text = player.playerWordNationality
+ binding.tvPlayerDescription.text = player.playerWordDescription
+
+ binding.btnBack.setOnClickListener {
+ requireActivity().onBackPressed()
+ }
+
+ binding.btnSearchGoogle.setOnClickListener {
+ val playerName = player.playerWordName
+
+ // Buat URL pencarian Google dengan data player.playerWordName
+ val searchQuery = "https://www.google.com/search?q=${playerName}"
+
+ // Buat intent untuk membuka browser dengan URL pencarian Google
+ val intent = Intent(Intent.ACTION_VIEW, Uri.parse(searchQuery))
+
+ // Periksa apakah ada aplikasi browser yang dapat menangani intent ini
+ if (intent.resolveActivity(requireContext().packageManager) != null) {
+ startActivity(intent)
+ } else {
+ // Jika tidak ada aplikasi browser yang dapat menangani intent ini
+ // Tampilkan pesan kesalahan atau lakukan tindakan lain sesuai kebutuhan Anda
+ // Misalnya, tampilkan pesan toast bahwa tidak ada browser yang tersedia.
+ Toast.makeText(requireContext(), "Tidak ada browser yang tersedia.", Toast.LENGTH_SHORT).show()
+ }
+ }
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+
+}
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/fragment/PlayerWordDataFragment.kt b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/fragment/PlayerWordDataFragment.kt
new file mode 100644
index 00000000..5a44b3f8
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/fragment/PlayerWordDataFragment.kt
@@ -0,0 +1,77 @@
+package com.vinz.playerpedia.fragment
+
+import android.os.Bundle
+import android.util.Log
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import androidx.navigation.findNavController
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.vinz.playerpedia.R
+import com.vinz.playerpedia.adapter.PlayerDataAdapter
+import com.vinz.playerpedia.data.PlayerDummyData.playerDummy
+import com.vinz.playerpedia.data.PlayerWordData
+import com.vinz.playerpedia.databinding.FragmentPlayerWordDataBinding
+
+class PlayerWordDataFragment : Fragment() {
+
+ private var _binding: FragmentPlayerWordDataBinding? = null
+ private val binding get() = _binding!!
+
+ private lateinit var playerDataAdapter: PlayerDataAdapter
+ private lateinit var recyclerView: RecyclerView
+
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ // Inflate the layout for this fragment
+ _binding = FragmentPlayerWordDataBinding.inflate(inflater, container, false)
+ return binding.root
+ }
+
+ @Suppress("DEPRECATION")
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ val playerLetter = arguments?.getString("playerData")
+ Log.d("playerLetter", playerLetter.toString())
+
+ val filteredPlayers = playerDummy.filter { playerWordStart ->
+ playerWordStart.playerLetter == playerLetter
+ }
+
+ recyclerView = binding.rvPlayerName
+ recyclerView.setHasFixedSize(true)
+ recyclerView.layoutManager = LinearLayoutManager(requireContext())
+ playerDataAdapter = PlayerDataAdapter(filteredPlayers[0].playerWordList)
+ recyclerView.adapter = playerDataAdapter
+
+ playerDataAdapter.setOnItemClickCallback(object : PlayerDataAdapter.OnItemClickCallback {
+ override fun onItemClicked(data: PlayerWordData) {
+ // Tambahkan kode untuk membuka detail makanan
+ showSelectedPlayer(data)
+ }
+ })
+
+ binding.btnBack.setOnClickListener {
+ requireActivity().onBackPressed()
+ }
+
+ }
+
+ private fun showSelectedPlayer(player: PlayerWordData) {
+ val mBundle = Bundle()
+ mBundle.putParcelable("player", player)
+ view?.findNavController()?.navigate(R.id.action_playerWordDataFragment_to_detailFragment, mBundle)
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+
+}
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/fragment/PlayerWordStartFragment.kt b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/fragment/PlayerWordStartFragment.kt
new file mode 100644
index 00000000..e0731c9f
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/java/com/vinz/playerpedia/fragment/PlayerWordStartFragment.kt
@@ -0,0 +1,81 @@
+package com.vinz.playerpedia.fragment
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.navigation.findNavController
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.vinz.playerpedia.R
+import com.vinz.playerpedia.adapter.PlayerAdapter
+import com.vinz.playerpedia.data.PlayerDummyData
+import com.vinz.playerpedia.data.PlayerWordStart
+import com.vinz.playerpedia.databinding.FragmentPlayerWordStartBinding
+
+class PlayerWordStartFragment : Fragment() {
+
+ private var _binding : FragmentPlayerWordStartBinding? = null
+ private val binding get() = _binding!!
+
+ private lateinit var playerAdapter: PlayerAdapter
+ private lateinit var recyclerView: RecyclerView
+
+ private var isLinearLayoutManager = true
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ // Inflate the layout for this fragment
+ _binding = FragmentPlayerWordStartBinding.inflate(inflater, container, false)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ recyclerView = binding.rvWords
+ recyclerView.setHasFixedSize(true)
+ recyclerView.layoutManager = LinearLayoutManager(requireContext())
+ playerAdapter = PlayerAdapter(PlayerDummyData.playerDummy)
+ recyclerView.adapter = playerAdapter
+
+ binding.btnChangeView.setOnClickListener {
+ isLinearLayoutManager = !isLinearLayoutManager
+ setLayout()
+ }
+
+ playerAdapter.setOnItemClickCallback(object : PlayerAdapter.OnItemClickCallback {
+ override fun onItemClicked(data: PlayerWordStart) {
+ // Tambahkan kode untuk membuka detail makanan
+ showSelectedWord(data)
+ }
+ })
+ }
+
+ private fun setLayout() {
+ if (isLinearLayoutManager) {
+ recyclerView.layoutManager = LinearLayoutManager(requireContext())
+ binding.btnChangeView.setImageResource(R.drawable.ic_grid)
+ } else {
+ recyclerView.layoutManager = GridLayoutManager(requireContext(), 2)
+ binding.btnChangeView.setImageResource(R.drawable.ic_list)
+ }
+ }
+
+ private fun showSelectedWord(player: PlayerWordStart) {
+ val mBundle = Bundle()
+ val playerLetterToFind = player.playerLetter
+ mBundle.putString("playerData", playerLetterToFind)
+ view?.findNavController()?.navigate(R.id.action_playerWordStartFragment_to_playerWordDataFragment, mBundle)
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ _binding = null
+ }
+
+}
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/drawable/bg_btn.xml b/Kotlin/PlayerPedia/app/src/main/res/drawable/bg_btn.xml
new file mode 100644
index 00000000..1254ba30
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/drawable/bg_btn.xml
@@ -0,0 +1,10 @@
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_back.xml b/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_back.xml
new file mode 100644
index 00000000..f61df5da
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_back.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_grid.xml b/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_grid.xml
new file mode 100644
index 00000000..6d7091f0
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_grid.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_launcher_background.xml b/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 00000000..07d5da9c
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_launcher_foreground.xml b/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_launcher_foreground.xml
new file mode 100644
index 00000000..2b068d11
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_list.xml b/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_list.xml
new file mode 100644
index 00000000..f01fd9a7
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/drawable/ic_list.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/Kotlin/PlayerPedia/app/src/main/res/drawable/test1.png b/Kotlin/PlayerPedia/app/src/main/res/drawable/test1.png
new file mode 100644
index 00000000..902e55c3
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/drawable/test1.png differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/drawable/test2.jpg b/Kotlin/PlayerPedia/app/src/main/res/drawable/test2.jpg
new file mode 100644
index 00000000..1ff0877f
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/drawable/test2.jpg differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/drawable/test3.jpg b/Kotlin/PlayerPedia/app/src/main/res/drawable/test3.jpg
new file mode 100644
index 00000000..5744e499
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/drawable/test3.jpg differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/font/poppins.ttf b/Kotlin/PlayerPedia/app/src/main/res/font/poppins.ttf
new file mode 100644
index 00000000..246a861a
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/font/poppins.ttf differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/font/poppins_bold.ttf b/Kotlin/PlayerPedia/app/src/main/res/font/poppins_bold.ttf
new file mode 100644
index 00000000..44313ca4
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/font/poppins_bold.ttf differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/font/poppins_medium.ttf b/Kotlin/PlayerPedia/app/src/main/res/font/poppins_medium.ttf
new file mode 100644
index 00000000..5b46f198
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/font/poppins_medium.ttf differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/layout/activity_detail.xml b/Kotlin/PlayerPedia/app/src/main/res/layout/activity_detail.xml
new file mode 100644
index 00000000..3c509199
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/layout/activity_detail.xml
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/layout/activity_main.xml b/Kotlin/PlayerPedia/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 00000000..13ba59f8
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/layout/activity_player_data.xml b/Kotlin/PlayerPedia/app/src/main/res/layout/activity_player_data.xml
new file mode 100644
index 00000000..2ba62b67
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/layout/activity_player_data.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/layout/fragment_detail.xml b/Kotlin/PlayerPedia/app/src/main/res/layout/fragment_detail.xml
new file mode 100644
index 00000000..70af618e
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/layout/fragment_detail.xml
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/layout/fragment_player_word_data.xml b/Kotlin/PlayerPedia/app/src/main/res/layout/fragment_player_word_data.xml
new file mode 100644
index 00000000..30ae05c7
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/layout/fragment_player_word_data.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/layout/fragment_player_word_start.xml b/Kotlin/PlayerPedia/app/src/main/res/layout/fragment_player_word_start.xml
new file mode 100644
index 00000000..217eb329
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/layout/fragment_player_word_start.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/layout/item_player.xml b/Kotlin/PlayerPedia/app/src/main/res/layout/item_player.xml
new file mode 100644
index 00000000..8814a755
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/layout/item_player.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Kotlin/PlayerPedia/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..6f3b755b
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Kotlin/PlayerPedia/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..6f3b755b
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/Kotlin/PlayerPedia/app/src/main/res/mipmap-hdpi/ic_launcher.webp
new file mode 100644
index 00000000..c209e78e
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/Kotlin/PlayerPedia/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..b2dfe3d1
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/Kotlin/PlayerPedia/app/src/main/res/mipmap-mdpi/ic_launcher.webp
new file mode 100644
index 00000000..4f0f1d64
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/Kotlin/PlayerPedia/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..62b611da
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/Kotlin/PlayerPedia/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
new file mode 100644
index 00000000..948a3070
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/Kotlin/PlayerPedia/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..1b9a6956
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/Kotlin/PlayerPedia/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
new file mode 100644
index 00000000..28d4b77f
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/Kotlin/PlayerPedia/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..9287f508
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/Kotlin/PlayerPedia/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
new file mode 100644
index 00000000..aa7d6427
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/Kotlin/PlayerPedia/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..9126ae37
Binary files /dev/null and b/Kotlin/PlayerPedia/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
diff --git a/Kotlin/PlayerPedia/app/src/main/res/navigation/nav_graph.xml b/Kotlin/PlayerPedia/app/src/main/res/navigation/nav_graph.xml
new file mode 100644
index 00000000..cc347195
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/navigation/nav_graph.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/values-night/themes.xml b/Kotlin/PlayerPedia/app/src/main/res/values-night/themes.xml
new file mode 100644
index 00000000..629e58bd
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/values/colors.xml b/Kotlin/PlayerPedia/app/src/main/res/values/colors.xml
new file mode 100644
index 00000000..cf7719c8
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+
+
+ #FF000000
+ #FFFFFFFF
+ #6499E9
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/values/strings.xml b/Kotlin/PlayerPedia/app/src/main/res/values/strings.xml
new file mode 100644
index 00000000..ed50d3d1
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/values/strings.xml
@@ -0,0 +1,11 @@
+
+ PlayerPedia
+ PlayerPedia
+ Where you can find your favorite players
+ For changing view
+
+ Hello blank fragment
+ Everything about football player
+ Find your favorite player here!
+ Search on Google
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/values/themes.xml b/Kotlin/PlayerPedia/app/src/main/res/values/themes.xml
new file mode 100644
index 00000000..48a9639e
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/values/themes.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/xml/backup_rules.xml b/Kotlin/PlayerPedia/app/src/main/res/xml/backup_rules.xml
new file mode 100644
index 00000000..fa0f996d
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/xml/backup_rules.xml
@@ -0,0 +1,13 @@
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/main/res/xml/data_extraction_rules.xml b/Kotlin/PlayerPedia/app/src/main/res/xml/data_extraction_rules.xml
new file mode 100644
index 00000000..9ee9997b
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/main/res/xml/data_extraction_rules.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/app/src/test/java/com/vinz/playerpedia/ExampleUnitTest.kt b/Kotlin/PlayerPedia/app/src/test/java/com/vinz/playerpedia/ExampleUnitTest.kt
new file mode 100644
index 00000000..7be7198e
--- /dev/null
+++ b/Kotlin/PlayerPedia/app/src/test/java/com/vinz/playerpedia/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package com.vinz.playerpedia
+
+import org.junit.Test
+
+import org.junit.Assert.*
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+ @Test
+ fun addition_isCorrect() {
+ assertEquals(4, 2 + 2)
+ }
+}
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/build.gradle.kts b/Kotlin/PlayerPedia/build.gradle.kts
new file mode 100644
index 00000000..df06d444
--- /dev/null
+++ b/Kotlin/PlayerPedia/build.gradle.kts
@@ -0,0 +1,5 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+plugins {
+ id("com.android.application") version "8.1.2" apply false
+ id("org.jetbrains.kotlin.android") version "1.9.0" apply false
+}
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/gradle.properties b/Kotlin/PlayerPedia/gradle.properties
new file mode 100644
index 00000000..3c5031eb
--- /dev/null
+++ b/Kotlin/PlayerPedia/gradle.properties
@@ -0,0 +1,23 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app's APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+# Kotlin code style for this project: "official" or "obsolete":
+kotlin.code.style=official
+# Enables namespacing of each library's R class so that its R class includes only the
+# resources declared in the library itself and none from the library's dependencies,
+# thereby reducing the size of the R class for that library
+android.nonTransitiveRClass=true
\ No newline at end of file
diff --git a/Kotlin/PlayerPedia/gradle/wrapper/gradle-wrapper.jar b/Kotlin/PlayerPedia/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..e708b1c0
Binary files /dev/null and b/Kotlin/PlayerPedia/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/Kotlin/PlayerPedia/gradle/wrapper/gradle-wrapper.properties b/Kotlin/PlayerPedia/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..90b96517
--- /dev/null
+++ b/Kotlin/PlayerPedia/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Tue Oct 03 06:19:02 WIB 2023
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/Kotlin/PlayerPedia/gradlew b/Kotlin/PlayerPedia/gradlew
new file mode 100644
index 00000000..4f906e0c
--- /dev/null
+++ b/Kotlin/PlayerPedia/gradlew
@@ -0,0 +1,185 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=`expr $i + 1`
+ done
+ case $i in
+ 0) set -- ;;
+ 1) set -- "$args0" ;;
+ 2) set -- "$args0" "$args1" ;;
+ 3) set -- "$args0" "$args1" "$args2" ;;
+ 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/Kotlin/PlayerPedia/gradlew.bat b/Kotlin/PlayerPedia/gradlew.bat
new file mode 100644
index 00000000..107acd32
--- /dev/null
+++ b/Kotlin/PlayerPedia/gradlew.bat
@@ -0,0 +1,89 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/Kotlin/PlayerPedia/settings.gradle.kts b/Kotlin/PlayerPedia/settings.gradle.kts
new file mode 100644
index 00000000..e8f1fac0
--- /dev/null
+++ b/Kotlin/PlayerPedia/settings.gradle.kts
@@ -0,0 +1,18 @@
+pluginManagement {
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
+dependencyResolutionManagement {
+ repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+rootProject.name = "PlayerPedia"
+include(":app")
+
\ No newline at end of file