From 838819f7b837957656c60a0ec0a8b6d8c290bc1d Mon Sep 17 00:00:00 2001 From: Jordan Artzet Date: Wed, 1 Feb 2023 10:37:57 +0100 Subject: [PATCH] :construction: update item adapter The item adapter work correctly --- Sources/app/build.gradle | 3 ++ .../api/MovieApplicationAPI.kt | 2 + .../movieapplication/api/RetrofitInstance.kt | 2 +- .../api/config/GlobalImageConfig.kt | 51 +++++++++++++++++++ .../ui/activity/MainActivity.kt | 7 +++ .../ui/adapter/HomeItemAdapter.kt | 25 ++++++++- .../pm/movieapplication/utils/Constants.kt | 1 + .../res/layout/item_vertical_fragment.xml | 17 ++++--- 8 files changed, 97 insertions(+), 11 deletions(-) create mode 100644 Sources/app/src/main/java/fr/iut/pm/movieapplication/api/config/GlobalImageConfig.kt diff --git a/Sources/app/build.gradle b/Sources/app/build.gradle index b83198a..6940713 100644 --- a/Sources/app/build.gradle +++ b/Sources/app/build.gradle @@ -60,6 +60,9 @@ dependencies { api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$rootProject.coroutines" api "org.jetbrains.kotlinx:kotlinx-coroutines-android:$rootProject.coroutines" + //Coil + implementation "io.coil-kt:coil:1.1.1" + // UI implementation "androidx.constraintlayout:constraintlayout:$rootProject.constraintLayoutVersion" implementation "com.google.android.material:material:$rootProject.materialVersion" diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/api/MovieApplicationAPI.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/api/MovieApplicationAPI.kt index f721f01..6212409 100644 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/api/MovieApplicationAPI.kt +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/api/MovieApplicationAPI.kt @@ -1,5 +1,7 @@ package fr.iut.pm.movieapplication.api +import fr.iut.pm.movieapplication.api.config.GlobalImageConfig +import fr.iut.pm.movieapplication.api.config.ImageConfig import fr.iut.pm.movieapplication.api.dtos.MovieResultDTO import fr.iut.pm.movieapplication.api.dtos.PopularDTO import retrofit2.Call diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/api/RetrofitInstance.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/api/RetrofitInstance.kt index b3db321..cbc1f53 100644 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/api/RetrofitInstance.kt +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/api/RetrofitInstance.kt @@ -15,7 +15,7 @@ object RetrofitInstance { .build() private val retrofit = Retrofit.Builder() - .baseUrl("https://api.themoviedb.org/3/") + .baseUrl(BASE_URL) .addConverterFactory(MoshiConverterFactory.create(moshi)) .build() diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/api/config/GlobalImageConfig.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/api/config/GlobalImageConfig.kt new file mode 100644 index 0000000..74063eb --- /dev/null +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/api/config/GlobalImageConfig.kt @@ -0,0 +1,51 @@ +package fr.iut.pm.movieapplication.api.config + +import android.util.Log +import com.squareup.moshi.Json + + +object GlobalImageConfig { + @Json(name = "base_url") + private var _baseUrl : String = "" + val baseUrl : String = _baseUrl + @Json(name = "secure_base_url") + private var _secureBaseUrl : String = "" + val secureBaseUrl = _secureBaseUrl + @Json(name = "backdrop_sizes") + private var backdropSizes : List = listOf() + @Json(name = "logo_sizes") + private var logoSizes : List = listOf() + @Json(name = "poster_sizes") + private var posterSizes : List = listOf() + @Json(name = "profile_sizes") + private var profilSizes : List = listOf() + @Json(name = "still_sizes") + private var stillSizes : List = listOf() + + fun updateConfig(config: ImageConfig) { + Log.d("BASE URL IMAGE", baseUrl) + _baseUrl = config.baseUrl + _secureBaseUrl = config.secureBaseUrl + posterSizes = config.posterSizes + backdropSizes = config.backdropSizes + } + +} + +data class ImageConfig( + + @Json(name = "images.base_url") + val baseUrl : String, + @Json(name = "images.secure_base_url") + val secureBaseUrl : String, + @Json(name = "images.backdrop_sizes") + val backdropSizes : List, + @Json(name = "images.logo_sizes") + val logoSizes : List, + @Json(name = "images.poster_sizes") + val posterSizes : List, + @Json(name = "images.profile_sizes") + val profileSizes : List, + @Json(name = "images.still_sizes") + val stillSizes : List +) \ No newline at end of file diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/activity/MainActivity.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/activity/MainActivity.kt index 1410f0f..6a0f405 100644 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/activity/MainActivity.kt +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/activity/MainActivity.kt @@ -7,8 +7,15 @@ import android.view.View import androidx.fragment.app.Fragment import com.google.android.material.bottomnavigation.BottomNavigationView import fr.iut.pm.movieapplication.R +import fr.iut.pm.movieapplication.api.RetrofitInstance +import fr.iut.pm.movieapplication.api.config.GlobalImageConfig import fr.iut.pm.movieapplication.ui.fragments.HomeSectionsFragment import fr.iut.pm.movieapplication.ui.fragments.MoviesFragment +import fr.iut.pm.movieapplication.utils.Constants +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import retrofit2.awaitResponse class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/HomeItemAdapter.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/HomeItemAdapter.kt index ebe3d79..20acfe9 100644 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/HomeItemAdapter.kt +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/ui/adapter/HomeItemAdapter.kt @@ -1,11 +1,19 @@ package fr.iut.pm.movieapplication.ui.adapter +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.core.net.toUri import androidx.recyclerview.widget.RecyclerView +import coil.load +import fr.iut.pm.movieapplication.R +import fr.iut.pm.movieapplication.api.config.GlobalImageConfig import fr.iut.pm.movieapplication.model.Movie import fr.iut.pm.movieapplication.ui.activity.MainActivity +import fr.iut.pm.movieapplication.utils.Constants.Companion.IMG_URL class HomeItemAdapter( private val context: MainActivity, @@ -14,6 +22,9 @@ class HomeItemAdapter( ) : RecyclerView.Adapter() { class ViewHolder(view : View) : RecyclerView.ViewHolder(view) { + val itemImage: ImageView = view.findViewById(R.id.item_image) + val itemName: TextView = view.findViewById(R.id.item_name) + val itemDate: TextView = view.findViewById(R.id.item_date) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { @@ -24,8 +35,18 @@ class HomeItemAdapter( } override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val currentItem = list?.get(position) + val currentItem = list[position] + Log.d("SINGLETON", GlobalImageConfig.baseUrl) + val imgUri = currentItem.posterPath?.let { + (IMG_URL + it).toUri().buildUpon().scheme("https").build() + + } + Log.d("SINGLETON", imgUri.toString() ) + holder.itemImage.load(imgUri) + holder.itemName.text = currentItem.title + holder.itemDate.text = currentItem.releaseDate + } - override fun getItemCount(): Int = list?.size!! + override fun getItemCount(): Int = list.size } \ No newline at end of file diff --git a/Sources/app/src/main/java/fr/iut/pm/movieapplication/utils/Constants.kt b/Sources/app/src/main/java/fr/iut/pm/movieapplication/utils/Constants.kt index a992963..4081cf5 100644 --- a/Sources/app/src/main/java/fr/iut/pm/movieapplication/utils/Constants.kt +++ b/Sources/app/src/main/java/fr/iut/pm/movieapplication/utils/Constants.kt @@ -4,6 +4,7 @@ class Constants { companion object { const val BASE_URL = "https://api.themoviedb.org/3/" + const val IMG_URL = "https://image.tmdb.org/t/p/w500" const val API_KEY = "8f14a279249638d7f247d0d7298b21b4" } } \ No newline at end of file diff --git a/Sources/app/src/main/res/layout/item_vertical_fragment.xml b/Sources/app/src/main/res/layout/item_vertical_fragment.xml index 9427bc7..706f15c 100644 --- a/Sources/app/src/main/res/layout/item_vertical_fragment.xml +++ b/Sources/app/src/main/res/layout/item_vertical_fragment.xml @@ -1,12 +1,12 @@ + android:layout_width="200dp" + android:layout_height="wrap_content">