From 56019e53b47c5128754648439acddf02ded0768f Mon Sep 17 00:00:00 2001 From: Avior Date: Fri, 19 Feb 2021 15:17:10 +0100 Subject: [PATCH] =?UTF-8?q?Page=202=20Compl=C3=A9t=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Avior --- app/build.gradle | 20 ++++- app/src/main/AndroidManifest.xml | 7 +- .../ca_contest/CountrySelectorActivity.kt | 74 +++++++++++++++++++ .../com/example/ca_contest/MainActivity.kt | 8 ++ .../ca_contest/adapters/CountryAdapter.kt | 71 ++++++++++++++++++ .../com/example/ca_contest/api/ApiClient.kt | 35 +++++++++ .../example/ca_contest/api/ApiInterface.kt | 11 +++ .../com/example/ca_contest/api/Country.kt | 21 ++++++ app/src/main/kotlin/CA_Contest/App.kt | 15 ---- .../res/layout/activity_country_selector.xml | 40 ++++++++++ app/src/main/res/layout/activity_main.xml | 11 +++ .../main/res/layout/country_selector_item.xml | 45 +++++++++++ app/src/main/res/navigation/nav_graph.xml | 28 +++++++ app/src/main/res/values/dimens.xml | 3 + app/src/main/res/values/strings.xml | 9 +++ app/src/main/res/values/themes.xml | 9 +++ build.gradle | 3 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 18 files changed, 394 insertions(+), 20 deletions(-) create mode 100644 app/src/main/java/com/example/ca_contest/CountrySelectorActivity.kt create mode 100644 app/src/main/java/com/example/ca_contest/adapters/CountryAdapter.kt create mode 100644 app/src/main/java/com/example/ca_contest/api/ApiClient.kt create mode 100644 app/src/main/java/com/example/ca_contest/api/ApiInterface.kt create mode 100644 app/src/main/java/com/example/ca_contest/api/Country.kt delete mode 100644 app/src/main/kotlin/CA_Contest/App.kt create mode 100644 app/src/main/res/layout/activity_country_selector.xml create mode 100644 app/src/main/res/layout/country_selector_item.xml create mode 100644 app/src/main/res/navigation/nav_graph.xml create mode 100644 app/src/main/res/values/dimens.xml diff --git a/app/build.gradle b/app/build.gradle index 76f07ce..6141f7a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,7 +38,25 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.2.1' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + 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' -} \ No newline at end of file + + // Retrofit + implementation 'com.google.code.gson:gson:2.8.4' + implementation 'com.squareup.retrofit2:retrofit:2.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.3.0' + implementation 'com.squareup.okhttp3:logging-interceptor:3.8.0' + implementation "com.android.support:cardview-v7:29.1.1" + implementation 'com.android.support:recyclerview-v7:29.1.1' + implementation 'com.squareup.picasso:picasso:2.71828' + + //Picasso + implementation 'com.squareup.picasso:picasso:2.71828' + implementation 'com.squareup.okhttp:okhttp:2.2.0' + implementation 'com.squareup.okhttp:okhttp-urlconnection:2.2.0' +} + +apply plugin: 'kotlin-android-extensions' \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3235640..2688741 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,14 +1,19 @@ - + + diff --git a/app/src/main/java/com/example/ca_contest/CountrySelectorActivity.kt b/app/src/main/java/com/example/ca_contest/CountrySelectorActivity.kt new file mode 100644 index 0000000..139c2cb --- /dev/null +++ b/app/src/main/java/com/example/ca_contest/CountrySelectorActivity.kt @@ -0,0 +1,74 @@ +package com.example.ca_contest + +import com.example.ca_contest.adapters.CountryAdapter +import android.app.ProgressDialog +import android.content.Intent +import android.os.Bundle +import android.view.KeyEvent +import android.view.View +import android.widget.Button +import android.widget.EditText +import android.widget.TextView +import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.ca_contest.api.ApiClient +import com.example.ca_contest.api.Country +import kotlinx.android.synthetic.main.activity_country_selector.* +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response +import kotlin.collections.ArrayList + + +class CountrySelectorActivity : AppCompatActivity() { + + private var data: ArrayList = ArrayList() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + setContentView(R.layout.activity_country_selector) + + // Progress Bar + val progressDialog = ProgressDialog(this) + progressDialog.setTitle("Récupération des pays...") + progressDialog.setCancelable(false) + progressDialog.show() + + // Initialize Recycler + val recycler = findViewById(R.id.list) + recycler.setHasFixedSize(true) + + val layoutManager = LinearLayoutManager(this) + recycler.layoutManager = layoutManager + + val adapter = CountryAdapter(data) + recycler.adapter = adapter + + // Fetch Countries + ApiClient.getClient.getCountries().enqueue(object : Callback> { + override fun onResponse(call: Call>?, response: Response>?) { + progressDialog.dismiss() + data.addAll(response!!.body()!!) + adapter.update(data.clone() as ArrayList) + recycler.adapter?.notifyDataSetChanged() + } + + override fun onFailure(call: Call>?, t: Throwable?) { + progressDialog.dismiss() + } + }) + + + // Input Text and Button + val textView = findViewById(R.id.text) + var btn = findViewById