🚧 add the request for the home

Now display the trends and the most popular media
features/retrofit/1
Jordan ARTZET 2 years ago
parent 838819f7b8
commit 86f7de2588

@ -1,9 +1,8 @@
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 fr.iut.pm.movieapplication.utils.Constants.Companion.API_KEY
import retrofit2.Call
import retrofit2.http.GET
import retrofit2.http.Path
@ -12,9 +11,12 @@ import retrofit2.http.Query
interface MovieApplicationAPI {
@GET("movie/popular")
fun getPopularMovies(@Query("api_key") apiKey : String) : Call<PopularDTO>
fun getPopularMovies(@Query("api_key") apiKey : String = API_KEY) : Call<PopularDTO>
@GET("trending/{media_type}/{time_window}")
fun getTrending(@Path("media_type") mediaType : String = "all", @Path("time_window") timeWindow : String = "day", @Query("api_key") apiKey: String = API_KEY ) : Call<PopularDTO>
@GET("movie/{movie_id")
fun getMovieDetails(@Path("movie_id") movieId : Int, @Query("api_key") apiKey: String) : Call<MovieResultDTO>
fun getMovieDetails(@Path("movie_id") movieId : Int, @Query("api_key") apiKey: String = API_KEY) : Call<MovieResultDTO>
}

@ -19,5 +19,5 @@ object RetrofitInstance {
.addConverterFactory(MoshiConverterFactory.create(moshi))
.build()
val api = retrofit.create(MovieApplicationAPI::class.java)
val api: MovieApplicationAPI = retrofit.create(MovieApplicationAPI::class.java)
}

@ -4,7 +4,6 @@ import android.util.Log
import fr.iut.pm.movieapplication.api.RetrofitInstance
import fr.iut.pm.movieapplication.api.dtos.PopularDTO
import fr.iut.pm.movieapplication.model.Movie
import fr.iut.pm.movieapplication.utils.Constants
import fr.iut.pm.movieapplication.utils.Constants.Companion.API_KEY
import fr.iut.pm.movieapplication.utils.Mapper
import retrofit2.Call
@ -17,7 +16,7 @@ class MovieRepository() {
val listMovie : MutableList<Movie> = mutableListOf()
RetrofitInstance.api.getPopularMovies(API_KEY).enqueue(object :
RetrofitInstance.api.getPopularMovies().enqueue(object :
Callback<PopularDTO> {
override fun onResponse(call: Call<PopularDTO>, response: Response<PopularDTO>) {
if (response.isSuccessful) {
@ -41,4 +40,27 @@ class MovieRepository() {
})
}
fun getTrends(callback: (List<Movie>) -> Unit) {
val listMovie : MutableList<Movie> = mutableListOf()
RetrofitInstance.api.getTrending().enqueue(object : Callback<PopularDTO> {
override fun onResponse(call: Call<PopularDTO>, response: Response<PopularDTO>) {
if(response.isSuccessful) {
Log.d("Response",response.body().toString())
val popularDTO = response.body()
popularDTO?.results?.forEach {
val movie = Mapper.MapToMovie(it)
listMovie.add(movie)
movie.title?.let { it1 -> Log.d("Movie", it1) }
}
}
callback(listMovie)
}
override fun onFailure(call: Call<PopularDTO>, t: Throwable) {
Log.d("Error failure", t.message.toString())
}
})
}
}

@ -9,6 +9,7 @@ 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.repository.MovieRepository
import fr.iut.pm.movieapplication.ui.fragments.HomeSectionsFragment
import fr.iut.pm.movieapplication.ui.fragments.MoviesFragment
import fr.iut.pm.movieapplication.utils.Constants
@ -18,6 +19,9 @@ import kotlinx.coroutines.launch
import retrofit2.awaitResponse
class MainActivity : AppCompatActivity() {
val movieRepository : MovieRepository = MovieRepository()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

@ -14,7 +14,9 @@ import fr.iut.pm.movieapplication.ui.adapter.HomeItemAdapter
import fr.iut.pm.movieapplication.ui.adapter.HomeItemDecoration
import fr.iut.pm.movieapplication.ui.viewmodel.HomeSectionsVM
class HomeSectionsFragment(private val context : MainActivity) : Fragment() {
class HomeSectionsFragment(
private val context : MainActivity
) : Fragment() {
private lateinit var homeSectionsViewModel : HomeSectionsVM
@ -22,15 +24,18 @@ class HomeSectionsFragment(private val context : MainActivity) : Fragment() {
val view = inflater.inflate(R.layout.fragment_home_sections, container, false)
//get the trends RecyclerView
context.movieRepository.getTrends {
val homeTrendsRecyclerView = view?.findViewById<RecyclerView>(R.id.home_trends_recycler_view)
homeTrendsRecyclerView?.adapter = HomeItemAdapter(context,R.layout.item_horizontal_home_page,ArrayList<Movie>())
homeTrendsRecyclerView?.adapter = HomeItemAdapter(context,R.layout.item_horizontal_home_page,it)
homeTrendsRecyclerView?.addItemDecoration(HomeItemDecoration())
}
//get the popularity RecyclerView
context.movieRepository.getPopularMovies {
val homePopularityRecyclerView = view?.findViewById<RecyclerView>(R.id.home_popularity_recycler_view)
homePopularityRecyclerView?.adapter = HomeItemAdapter(context,R.layout.item_horizontal_home_page,ArrayList<Movie>())
homePopularityRecyclerView?.adapter = HomeItemAdapter(context,R.layout.item_horizontal_home_page,it)
homePopularityRecyclerView?.addItemDecoration(HomeItemDecoration())
}
//get the free RecyclerView
val homeFreeRecyclerView = view?.findViewById<RecyclerView>(R.id.home_free_recycler_view)
homeFreeRecyclerView?.adapter = HomeItemAdapter(context,R.layout.item_horizontal_home_page,ArrayList())

@ -30,10 +30,7 @@ class MoviesFragment(
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_movies, container, false)
val repository = MovieRepository()
repository.getPopularMovies { listMovies ->
context.movieRepository.getPopularMovies { listMovies ->
val moviesRecyclerView = view?.findViewById<RecyclerView>(R.id.movies_item_recycler_view)
moviesRecyclerView?.adapter = HomeItemAdapter(context, R.layout.item_vertical_fragment, listMovies)
moviesRecyclerView ?. layoutManager = GridLayoutManager (context, 2)

@ -10,13 +10,13 @@
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="200dp"
app:cardCornerRadius="15dp"
app:cardCornerRadius="5dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/home_section_item_image"
android:id="@+id/item_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
@ -26,7 +26,7 @@
</androidx.cardview.widget.CardView>
<TextView
android:id="@+id/home_section_item_name"
android:id="@+id/item_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nom du film"
@ -35,12 +35,12 @@
app:layout_constraintTop_toBottomOf="@+id/cardView" />
<TextView
android:id="@+id/home_section_item_date"
android:id="@+id/item_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="23 nov 2012"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/home_section_item_name" />
app:layout_constraintTop_toBottomOf="@+id/item_name" />
</androidx.constraintlayout.widget.ConstraintLayout>

@ -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="200dp"
android:layout_width="175dp"
android:layout_height="wrap_content">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_height="250dp"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
@ -21,14 +21,14 @@
<ImageView
android:id="@+id/item_image"
android:layout_width="match_parent"
android:layout_height="250dp"
android:layout_height="210dp"
android:scaleType="centerCrop"
android:background="@color/black" />
<TextView
android:id="@+id/item_name"
android:layout_width="match_parent"
android:layout_height="25dp"
android:layout_height="20dp"
android:layout_gravity="center"
android:textAlignment="center"
/>
@ -36,7 +36,7 @@
<TextView
android:id="@+id/item_date"
android:layout_width="match_parent"
android:layout_height="25dp"
android:layout_height="20dp"
android:layout_gravity="center"
android:textAlignment="center"
/>

Loading…
Cancel
Save