🚧 update item adapter

The item adapter work correctly
features/retrofit/1
Jordan ARTZET 2 years ago
parent 904a5078ef
commit 838819f7b8

@ -60,6 +60,9 @@ dependencies {
api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$rootProject.coroutines" api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$rootProject.coroutines"
api "org.jetbrains.kotlinx:kotlinx-coroutines-android:$rootProject.coroutines" api "org.jetbrains.kotlinx:kotlinx-coroutines-android:$rootProject.coroutines"
//Coil
implementation "io.coil-kt:coil:1.1.1"
// UI // UI
implementation "androidx.constraintlayout:constraintlayout:$rootProject.constraintLayoutVersion" implementation "androidx.constraintlayout:constraintlayout:$rootProject.constraintLayoutVersion"
implementation "com.google.android.material:material:$rootProject.materialVersion" implementation "com.google.android.material:material:$rootProject.materialVersion"

@ -1,5 +1,7 @@
package fr.iut.pm.movieapplication.api 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.MovieResultDTO
import fr.iut.pm.movieapplication.api.dtos.PopularDTO import fr.iut.pm.movieapplication.api.dtos.PopularDTO
import retrofit2.Call import retrofit2.Call

@ -15,7 +15,7 @@ object RetrofitInstance {
.build() .build()
private val retrofit = Retrofit.Builder() private val retrofit = Retrofit.Builder()
.baseUrl("https://api.themoviedb.org/3/") .baseUrl(BASE_URL)
.addConverterFactory(MoshiConverterFactory.create(moshi)) .addConverterFactory(MoshiConverterFactory.create(moshi))
.build() .build()

@ -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<String> = listOf()
@Json(name = "logo_sizes")
private var logoSizes : List<String> = listOf()
@Json(name = "poster_sizes")
private var posterSizes : List<String> = listOf()
@Json(name = "profile_sizes")
private var profilSizes : List<String> = listOf()
@Json(name = "still_sizes")
private var stillSizes : List<String> = 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<String>,
@Json(name = "images.logo_sizes")
val logoSizes : List<String>,
@Json(name = "images.poster_sizes")
val posterSizes : List<String>,
@Json(name = "images.profile_sizes")
val profileSizes : List<String>,
@Json(name = "images.still_sizes")
val stillSizes : List<String>
)

@ -7,8 +7,15 @@ import android.view.View
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomnavigation.BottomNavigationView
import fr.iut.pm.movieapplication.R 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.HomeSectionsFragment
import fr.iut.pm.movieapplication.ui.fragments.MoviesFragment 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() { class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {

@ -1,11 +1,19 @@
package fr.iut.pm.movieapplication.ui.adapter package fr.iut.pm.movieapplication.ui.adapter
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.core.net.toUri
import androidx.recyclerview.widget.RecyclerView 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.model.Movie
import fr.iut.pm.movieapplication.ui.activity.MainActivity import fr.iut.pm.movieapplication.ui.activity.MainActivity
import fr.iut.pm.movieapplication.utils.Constants.Companion.IMG_URL
class HomeItemAdapter( class HomeItemAdapter(
private val context: MainActivity, private val context: MainActivity,
@ -14,6 +22,9 @@ class HomeItemAdapter(
) : RecyclerView.Adapter<HomeItemAdapter.ViewHolder>() { ) : RecyclerView.Adapter<HomeItemAdapter.ViewHolder>() {
class ViewHolder(view : View) : RecyclerView.ViewHolder(view) { class ViewHolder(view : View) : RecyclerView.ViewHolder(view) {
val itemImage: ImageView = view.findViewById<ImageView>(R.id.item_image)
val itemName: TextView = view.findViewById<TextView>(R.id.item_name)
val itemDate: TextView = view.findViewById<TextView>(R.id.item_date)
} }
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
@ -24,8 +35,18 @@ class HomeItemAdapter(
} }
override fun onBindViewHolder(holder: ViewHolder, position: Int) { 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
} }

@ -4,6 +4,7 @@ class Constants {
companion object { companion object {
const val BASE_URL = "https://api.themoviedb.org/3/" 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" const val API_KEY = "8f14a279249638d7f247d0d7298b21b4"
} }
} }

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="175dp" android:layout_width="200dp"
android:layout_height="match_parent"> android:layout_height="wrap_content">
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="250dp" android:layout_height="300dp"
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_marginEnd="10dp" android:layout_marginEnd="10dp"
@ -19,23 +19,24 @@
android:orientation="vertical"> android:orientation="vertical">
<ImageView <ImageView
android:id="@+id/item_image"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="210dp" android:layout_height="250dp"
android:scaleType="centerCrop"
android:background="@color/black" /> android:background="@color/black" />
<TextView <TextView
android:id="@+id/item_name" android:id="@+id/item_name"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="25dp"
android:text="Nom du film"
android:layout_gravity="center" android:layout_gravity="center"
android:textAlignment="center" android:textAlignment="center"
/> />
<TextView <TextView
android:id="@+id/item_date"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="25dp"
android:text="23 nov 2015"
android:layout_gravity="center" android:layout_gravity="center"
android:textAlignment="center" android:textAlignment="center"
/> />

Loading…
Cancel
Save