From 396f7dfb5aa4bb9833020d3fe1a9107cbc0f8897 Mon Sep 17 00:00:00 2001 From: Avior Date: Fri, 19 Feb 2021 17:08:47 +0100 Subject: [PATCH] Page 1 Signed-off-by: Avior --- app/build.gradle | 27 +++-- .../1.json | 64 +++++++++++ app/src/main/AndroidManifest.xml | 6 +- .../com/example/ca_contest/CountryAdapter.kt | 40 ------- .../ca_contest/CountrySelectorActivity.kt | 3 +- .../example/ca_contest/ListCountryActivity.kt | 61 ----------- .../com/example/ca_contest/MainActivity.kt | 44 ++++++-- .../adapters/HomepageCountryAdapter.kt | 65 +++++++++++ .../com/example/ca_contest/dao/AppDatabase.kt | 4 +- .../example/ca_contest/{ => dao}/Country.kt | 8 +- .../com/example/ca_contest/dao/CountryDAO.kt | 1 - .../com/example/ca_contest/libs/Converters.kt | 16 +++ app/src/main/res/drawable/border_bottom.xml | 16 +++ .../res/layout/activity_country_selector.xml | 20 ++-- .../main/res/layout/activity_list_country.xml | 36 ------- app/src/main/res/layout/activity_main.xml | 34 +++--- .../main/res/layout/country_selector_item.xml | 19 +++- app/src/main/res/layout/item_list.xml | 101 +++++++++++++----- app/src/main/res/navigation/nav_graph.xml | 28 ----- app/src/main/res/values/colors.xml | 3 + 20 files changed, 343 insertions(+), 253 deletions(-) create mode 100644 app/schemas/com.example.ca_contest.dao.AppDatabase/1.json delete mode 100644 app/src/main/java/com/example/ca_contest/CountryAdapter.kt delete mode 100644 app/src/main/java/com/example/ca_contest/ListCountryActivity.kt create mode 100644 app/src/main/java/com/example/ca_contest/adapters/HomepageCountryAdapter.kt rename app/src/main/java/com/example/ca_contest/{ => dao}/Country.kt (70%) create mode 100644 app/src/main/java/com/example/ca_contest/libs/Converters.kt create mode 100644 app/src/main/res/drawable/border_bottom.xml delete mode 100644 app/src/main/res/layout/activity_list_country.xml delete mode 100644 app/src/main/res/navigation/nav_graph.xml diff --git a/app/build.gradle b/app/build.gradle index 525466b..dc8b799 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,7 @@ plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-android-extensions' - id 'kotlin-kapt' + id 'kotlin-kapt' } android { @@ -48,20 +48,11 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.2.0' 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' - implementation 'androidx.navigation:navigation-fragment-ktx:2.2.2' - implementation 'androidx.navigation:navigation-ui-ktx:2.2.2' +// implementation 'androidx.recyclerview:recyclerview:1.1.0' +// implementation 'com.google.android.material:material:1.3.0' +// implementation 'androidx.preference:preference:1.1.1' +// implementation 'androidx.navigation:navigation-fragment-ktx:2.2.2' +// implementation 'androidx.navigation:navigation-ui-ktx:2.2.2' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' @@ -79,6 +70,12 @@ dependencies { implementation 'com.squareup.picasso:picasso:2.71828' implementation 'com.squareup.okhttp:okhttp:2.2.0' implementation 'com.squareup.okhttp:okhttp-urlconnection:2.2.0' + + // Database + implementation 'androidx.room:room-runtime:2.2.6' + implementation 'androidx.room:room-runtime:2.2.6' + kapt 'androidx.room:room-compiler:2.2.6' + } apply plugin: 'kotlin-android-extensions' diff --git a/app/schemas/com.example.ca_contest.dao.AppDatabase/1.json b/app/schemas/com.example.ca_contest.dao.AppDatabase/1.json new file mode 100644 index 0000000..3122f40 --- /dev/null +++ b/app/schemas/com.example.ca_contest.dao.AppDatabase/1.json @@ -0,0 +1,64 @@ +{ + "formatVersion": 1, + "database": { + "version": 1, + "identityHash": "8bdf84f071ba217eb3653e01500bac94", + "entities": [ + { + "tableName": "country", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`countryId` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `country` TEXT, `capitalCity` TEXT, `continent` TEXT, `code` TEXT, `date` INTEGER)", + "fields": [ + { + "fieldPath": "countryId", + "columnName": "countryId", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "country", + "columnName": "country", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "capitalCity", + "columnName": "capitalCity", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "continent", + "columnName": "continent", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "code", + "columnName": "code", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "date", + "columnName": "date", + "affinity": "INTEGER", + "notNull": false + } + ], + "primaryKey": { + "columnNames": [ + "countryId" + ], + "autoGenerate": true + }, + "indices": [], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '8bdf84f071ba217eb3653e01500bac94')" + ] + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f127d22..21da455 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,9 +12,7 @@ android:usesCleartextTraffic="true" android:theme="@style/Theme.CA_Contest"> + android:name=".CountrySelectorActivity"> @@ -22,8 +20,6 @@ - - \ 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 deleted file mode 100644 index 8093f14..0000000 --- a/app/src/main/java/com/example/ca_contest/CountryAdapter.kt +++ /dev/null @@ -1,40 +0,0 @@ -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/CountrySelectorActivity.kt b/app/src/main/java/com/example/ca_contest/CountrySelectorActivity.kt index 139c2cb..231228d 100644 --- a/app/src/main/java/com/example/ca_contest/CountrySelectorActivity.kt +++ b/app/src/main/java/com/example/ca_contest/CountrySelectorActivity.kt @@ -5,11 +5,13 @@ import android.app.ProgressDialog import android.content.Intent import android.os.Bundle import android.view.KeyEvent +import android.view.MenuItem import android.view.View import android.widget.Button import android.widget.EditText import android.widget.TextView import android.widget.Toast +import androidx.appcompat.app.ActionBar import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -70,5 +72,4 @@ class CountrySelectorActivity : AppCompatActivity() { recycler.adapter?.notifyDataSetChanged() } } - } \ 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 deleted file mode 100644 index 3dddf02..0000000 --- a/app/src/main/java/com/example/ca_contest/ListCountryActivity.kt +++ /dev/null @@ -1,61 +0,0 @@ -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/MainActivity.kt b/app/src/main/java/com/example/ca_contest/MainActivity.kt index 8dc40d6..20aa4b6 100644 --- a/app/src/main/java/com/example/ca_contest/MainActivity.kt +++ b/app/src/main/java/com/example/ca_contest/MainActivity.kt @@ -1,19 +1,43 @@ package com.example.ca_contest import android.content.Intent -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle -import android.widget.Button +import android.view.View +import androidx.appcompat.app.ActionBar +import androidx.appcompat.app.AppCompatActivity +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.ca_contest.adapters.HomepageCountryAdapter +import com.example.ca_contest.dao.AppDatabaseHelper +import java.util.* class MainActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { + private lateinit var countryAdapter: HomepageCountryAdapter + // private lateinit var imageView: ImageView + override fun onCreate(savedInstanceState: Bundle?) + { super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) - var btn = findViewById