diff --git a/app/build.gradle b/app/build.gradle
index d8dbe01..6b56ffa 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -55,6 +55,7 @@ dependencies {
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.github.doyaaaaaken:kotlin-csv-jvm:0.7.3'
+ implementation "androidx.cardview:cardview:1.0.0"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f0e2911..551dc3b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -18,6 +18,7 @@
+
\ No newline at end of file
diff --git a/app/src/main/java/com/illusionware/npsbrowser/AppData.kt b/app/src/main/java/com/illusionware/npsbrowser/AppData.kt
new file mode 100644
index 0000000..97fd7fe
--- /dev/null
+++ b/app/src/main/java/com/illusionware/npsbrowser/AppData.kt
@@ -0,0 +1,5 @@
+package com.illusionware.npsbrowser
+
+data class AppData(val TitleID: String?, val Region: String?, val Title : String?, val link : String?,
+ val license : String?, val contentID : String?, val lastDateTime: String?,
+ val fileSize : Number?, val SHA256 : String?, val minFW : String?)
\ No newline at end of file
diff --git a/app/src/main/java/com/illusionware/npsbrowser/activities/AppsListActivity.kt b/app/src/main/java/com/illusionware/npsbrowser/activities/AppsListActivity.kt
new file mode 100644
index 0000000..2e6b292
--- /dev/null
+++ b/app/src/main/java/com/illusionware/npsbrowser/activities/AppsListActivity.kt
@@ -0,0 +1,36 @@
+package com.illusionware.npsbrowser.activities
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+import android.widget.Toast
+import androidx.appcompat.app.AppCompatActivity
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.illusionware.npsbrowser.AppData
+import com.illusionware.npsbrowser.RecyclerTouchListener
+import com.illusionware.npsbrowser.adapters.AppAdapter
+import com.illusionware.npsbrowser.databinding.ActivityAppsListBinding
+
+class AppsListActivity : AppCompatActivity() {
+ companion object {
+ lateinit var apps : ArrayList
+ }
+ private lateinit var recyclerView: RecyclerView
+ private lateinit var viewAdapter: RecyclerView.Adapter<*>
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ val binding = ActivityAppsListBinding.inflate(layoutInflater);
+ setContentView(binding.root)
+
+ viewAdapter = AppAdapter(apps)
+
+ recyclerView = binding.appsRecycler
+ recyclerView.apply {
+ layoutManager = LinearLayoutManager(applicationContext)
+ adapter = viewAdapter
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/illusionware/npsbrowser/activities/MainActivity.kt b/app/src/main/java/com/illusionware/npsbrowser/activities/MainActivity.kt
index f64cbc3..76f6e9e 100644
--- a/app/src/main/java/com/illusionware/npsbrowser/activities/MainActivity.kt
+++ b/app/src/main/java/com/illusionware/npsbrowser/activities/MainActivity.kt
@@ -9,6 +9,7 @@ import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import com.github.doyaaaaaken.kotlincsv.dsl.csvReader
+import com.illusionware.npsbrowser.AppData
import com.illusionware.npsbrowser.databinding.ActivityMainBinding
import java.io.InputStream
@@ -42,7 +43,32 @@ class MainActivity : AppCompatActivity() {
if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
resultData?.data?.also { uri ->
val inputStream: InputStream? = contentResolver.openInputStream(uri)
- val entries : List