diff --git a/app/build.gradle b/app/build.gradle
index 76f07ce..114dc80 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,6 +1,8 @@
plugins {
id 'com.android.application'
id 'kotlin-android'
+ id 'kotlin-android-extensions'
+ id 'kotlin-kapt'
}
android {
@@ -14,6 +16,14 @@ android {
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+
+ javaCompileOptions {
+ annotationProcessorOptions {
+ arguments =
+ ["room.schemaLocation": "$projectDir/schemas".toString()]
+ }
+ }
+
}
buildTypes {
@@ -36,9 +46,18 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.appcompat:appcompat:1.2.0'
- implementation 'com.google.android.material:material:1.2.1'
+ implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
+ implementation 'androidx.recyclerview:recyclerview:1.1.0'
+ implementation 'com.google.android.material:material:1.3.0'
+ implementation 'androidx.room:room-runtime:2.2.6'
+ implementation 'androidx.preference:preference:1.1.1'
+ implementation 'androidx.room:room-runtime:2.2.6'
+ implementation 'com.squareup.picasso:picasso:2.71828'
+ implementation 'com.squareup.okhttp:okhttp:2.2.0'
+ implementation 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+ annotationProcessor 'androidx.room:room-compiler:2.2.6'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3235640..709a25a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,7 +1,8 @@
-
+
+
-
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ca_contest/Country.kt b/app/src/main/java/com/example/ca_contest/Country.kt
new file mode 100644
index 0000000..4dc5f10
--- /dev/null
+++ b/app/src/main/java/com/example/ca_contest/Country.kt
@@ -0,0 +1,14 @@
+package com.example.ca_contest
+
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import java.text.SimpleDateFormat
+
+@Entity(tableName = "country")
+class Country(
+ @PrimaryKey(autoGenerate = true)
+ val countryId: Long = 0,
+ val country: String? = null,
+ val capitalCity: String? = null,
+ val continent: String? = null,
+ val date: SimpleDateFormat? = null)
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ca_contest/CountryAdapter.kt b/app/src/main/java/com/example/ca_contest/CountryAdapter.kt
new file mode 100644
index 0000000..8093f14
--- /dev/null
+++ b/app/src/main/java/com/example/ca_contest/CountryAdapter.kt
@@ -0,0 +1,40 @@
+package com.example.ca_contest
+
+import android.util.Log
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.TextView
+import androidx.recyclerview.widget.RecyclerView
+
+class CountryAdapter(private var listCountry: MutableList) :
+ RecyclerView.Adapter()
+{
+ // Crée chaque vue item à afficher :
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CountryViewHolder
+ {
+ val viewCourse = LayoutInflater.from(parent.context)
+ .inflate(R.layout.item_list, parent, false)
+ return CountryViewHolder(viewCourse)
+ }
+
+ // Renseigne le contenu de chaque vue item :
+ override fun onBindViewHolder(holder: CountryViewHolder, position: Int)
+ {
+ holder.textViewLibelleCourse.text = listCountry[position].country
+ }
+
+ override fun getItemCount(): Int = listCountry.size
+ // ViewHolder :
+ inner class CountryViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
+ {
+ val textViewLibelleCourse: TextView = itemView.findViewById(R.id.list_country)
+ init
+ {
+ textViewLibelleCourse.setOnClickListener {
+ val country = listCountry[adapterPosition]
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ca_contest/ListCountryActivity.kt b/app/src/main/java/com/example/ca_contest/ListCountryActivity.kt
new file mode 100644
index 0000000..3dddf02
--- /dev/null
+++ b/app/src/main/java/com/example/ca_contest/ListCountryActivity.kt
@@ -0,0 +1,61 @@
+package com.example.ca_contest
+
+import android.annotation.SuppressLint
+import android.content.ContextWrapper
+import android.content.Intent
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import android.widget.ImageView
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.example.ca_contest.dao.AppDatabaseHelper
+import com.squareup.picasso.Picasso;
+import kotlinx.android.synthetic.main.activity_list_country.*
+import java.io.File
+import java.text.SimpleDateFormat
+import java.util.*
+import kotlin.collections.ArrayList
+
+class ListCountryActivity : AppCompatActivity() {
+ private lateinit var countryAdapter: CountryAdapter
+// private lateinit var imageView: ImageView
+ @SuppressLint("SimpleDateFormat")
+ override fun onCreate(savedInstanceState: Bundle?)
+ {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_list_country)
+
+// imageView = findViewById(R.id.image)
+ // à ajouter pour de meilleures performances :
+ list_country.setHasFixedSize(true)
+
+ // layout manager, décrivant comment les items sont disposés :
+ val layoutManager = LinearLayoutManager(this)
+ list_country.layoutManager = layoutManager
+ // contenu d'exemple :
+ val listCountry: List = AppDatabaseHelper
+ .getDatabase(this)
+ .countryDAO()
+ .getListCountry()
+
+// Picasso.get()
+// .load("http://www.geognos.com/api/en/countries/flag/FR.png")
+// .fit()
+// .centerCrop() // ou centerInside()
+// .into(imageView)
+
+ }
+
+ fun addCountry(view: View) {
+// val intent = Intent(this, CountrySelectorActivity::class.java)
+// startActivity(intent)
+//
+// finish()
+ }
+
+ fun deleteCountry(view: View) {
+
+ }
+
+}
diff --git a/app/src/main/java/com/example/ca_contest/dao/AppDatabase.kt b/app/src/main/java/com/example/ca_contest/dao/AppDatabase.kt
new file mode 100644
index 0000000..4747b00
--- /dev/null
+++ b/app/src/main/java/com/example/ca_contest/dao/AppDatabase.kt
@@ -0,0 +1,11 @@
+package com.example.ca_contest.dao
+
+import androidx.room.Database
+import androidx.room.RoomDatabase
+import com.example.ca_contest.Country
+
+@Database(entities = [Country::class], version = 1)
+abstract class AppDatabase : RoomDatabase()
+{
+ abstract fun countryDAO(): CountryDAO
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ca_contest/dao/AppDatabaseHelper.kt b/app/src/main/java/com/example/ca_contest/dao/AppDatabaseHelper.kt
new file mode 100644
index 0000000..475bc4b
--- /dev/null
+++ b/app/src/main/java/com/example/ca_contest/dao/AppDatabaseHelper.kt
@@ -0,0 +1,28 @@
+package com.example.ca_contest.dao
+
+import android.content.Context
+import androidx.room.Room
+
+class AppDatabaseHelper(context: Context)
+{
+ // Bloc de code "static" :
+ companion object
+ {
+ // Helper :
+ private lateinit var databaseHelper: AppDatabaseHelper
+ // Getter instance :
+ fun getDatabase(context: Context): AppDatabase
+ {
+ if (!::databaseHelper.isInitialized)
+ {
+ databaseHelper = AppDatabaseHelper(context)
+ }
+ return databaseHelper.database
+ }
+ }
+ // Base de données :
+ val database: AppDatabase = Room
+ .databaseBuilder(context.applicationContext, AppDatabase::class.java, "courses.db")
+ .allowMainThreadQueries()
+ .build()
+}
diff --git a/app/src/main/java/com/example/ca_contest/dao/CountryDAO.kt b/app/src/main/java/com/example/ca_contest/dao/CountryDAO.kt
new file mode 100644
index 0000000..cba6e64
--- /dev/null
+++ b/app/src/main/java/com/example/ca_contest/dao/CountryDAO.kt
@@ -0,0 +1,16 @@
+package com.example.ca_contest.dao
+
+import androidx.room.*
+import com.example.ca_contest.Country
+
+@Dao
+abstract class CountryDAO {
+ @Query("SELECT * FROM country")
+ abstract fun getListCountry(): List
+ @Insert
+ abstract fun insert(vararg country: Country)
+ @Update
+ abstract fun update(vararg country: Country)
+ @Delete
+ abstract fun delete(vararg country: Country)
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable-anydpi/ic_trash.xml b/app/src/main/res/drawable-anydpi/ic_trash.xml
new file mode 100644
index 0000000..e55d0dd
--- /dev/null
+++ b/app/src/main/res/drawable-anydpi/ic_trash.xml
@@ -0,0 +1,11 @@
+
+
+
diff --git a/app/src/main/res/drawable-hdpi/ic_trash.png b/app/src/main/res/drawable-hdpi/ic_trash.png
new file mode 100644
index 0000000..c3c4959
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_trash.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_trash.png b/app/src/main/res/drawable-mdpi/ic_trash.png
new file mode 100644
index 0000000..6c885e5
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_trash.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_trash.png b/app/src/main/res/drawable-xhdpi/ic_trash.png
new file mode 100644
index 0000000..4634a35
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_trash.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_trash.png b/app/src/main/res/drawable-xxhdpi/ic_trash.png
new file mode 100644
index 0000000..f8cbf92
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_trash.png differ
diff --git a/app/src/main/res/layout/activity_list_country.xml b/app/src/main/res/layout/activity_list_country.xml
new file mode 100644
index 0000000..027d9e3
--- /dev/null
+++ b/app/src/main/res/layout/activity_list_country.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_list.xml b/app/src/main/res/layout/item_list.xml
new file mode 100644
index 0000000..61fa2bb
--- /dev/null
+++ b/app/src/main/res/layout/item_list.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+