MainActivity.kt

		package com.example.primarydetailflowkotlin
		
		import android.content.Intent
		import android.os.Build
		import androidx.appcompat.app.AppCompatActivity
		import android.os.Bundle
		import android.view.*
		import android.widget.FrameLayout
		import android.widget.ImageView
		import androidx.recyclerview.widget.RecyclerView
		import com.bumptech.glide.Glide
		
		class MainActivity : AppCompatActivity() {
		
		    override fun onCreate(savedInstanceState: Bundle?) {
		        super.onCreate(savedInstanceState)
		        setContentView(R.layout.activity_main)
		
		        fullScreen()
		
		        val detailFrameLayout: FrameLayout? = findViewById(R.id.detailFrameLayout)
		        val recyclerView: RecyclerView = findViewById(R.id.recyclerView)
		
		        val onClickListener = View.OnClickListener { itemView ‐>
		            val id = itemView.tag
		            if (detailFrameLayout != null) {
		                val fragment = DetailFragment().apply {
		                    arguments = Bundle().apply {
		                        putInt("id", id.toString().toInt())
		                    }
		                }
		                supportFragmentManager.beginTransaction().replace(R.id.detailFrameLayout, fragment).commit()
		            } else {
		                val intent = Intent(this, DetailActivity::class.java).apply {
		                    putExtra("id", id.toString().toInt())
		                }
		                this.startActivity(intent)
		            }
		        }
		
		        setupRecyclerView(recyclerView, onClickListener)
		    }
		
		    private fun setupRecyclerView(recyclerView: RecyclerView,  onClickListener: View.OnClickListener) {
		        recyclerView.adapter = VideoGameViewAdapter(getVideoGames(), onClickListener)
		    }
		
		    class VideoGameViewAdapter(private val values: List<VideoGame>, private val onClickListener: View.OnClickListener) :
		        RecyclerView.Adapter<VideoGameViewAdapter.ViewHolder>() {
		
		        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
		            val view &equals; LayoutInflater.from(parent.context)
		                .inflate(R.layout.list_content, parent, false)
		            return ViewHolder(view)
		        }
		
		        override fun onBindViewHolder(holder: ViewHolder, position: Int) {
		            val videoGame &equals; values[position]
		
		            holder.posterImageView.let {
		                Glide.with(holder.itemView.context)
		                    .load(videoGame.url)
		                    .into(it)
		            }
		
		            with(holder.itemView) {
		                tag &equals; videoGame.id
		                setOnClickListener(onClickListener)
		            }
		        }
		
		        override fun getItemCount() &equals; values.size
		
		        inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
		            val posterImageView: ImageView &equals; view.findViewById(R.id.posterImageView)
		        }
		    }
		
		    private fun getVideoGames(): MutableList<VideoGame>{
		        val videoGame:MutableList<VideoGame> &equals; ArrayList()
		
		        val id &equals; resources.getIntArray(R.array.id)
		        val name &equals; resources.getStringArray(R.array.name)
		        val date &equals; resources.getStringArray(R.array.date)
		        val rating &equals; resources.getStringArray(R.array.rating)
		        val description &equals; resources.getStringArray(R.array.description)
		        val url &equals; resources.getStringArray(R.array.url)
		
		        for (i in id.indices) {
		            videoGame.add(VideoGame(id[i], name[i], date[i], rating[i], description[i], url[i]))
		        }
		
		        return videoGame
		    }
		
		    private fun fullScreen() {
		        if (Build.VERSION.SDK_INT >&equals; Build.VERSION_CODES.R) {
		            val controller &equals; window.insetsController
		            if (controller !&equals; null) {
		                controller.hide(WindowInsets.Type.navigationBars())
		                controller.systemBarsBehavior &equals; WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
		            }
		        }
		    }
		}