🚧 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-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"

@ -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

@ -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()

@ -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 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?) {

@ -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<HomeItemAdapter.ViewHolder>() {
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 {
@ -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
}

@ -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"
}
}

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

Loading…
Cancel
Save