diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/API/MovieResponse.kt b/CineCool/app/src/main/java/fr/iut/cinecool/API/MovieResponse.kt index 3338bfe..862daa3 100644 --- a/CineCool/app/src/main/java/fr/iut/cinecool/API/MovieResponse.kt +++ b/CineCool/app/src/main/java/fr/iut/cinecool/API/MovieResponse.kt @@ -1,5 +1,8 @@ package fr.iut.cinecool.API +import android.os.Parcel +import android.os.Parcelable + data class MovieResponse( val page: Int, val results: List, @@ -12,4 +15,33 @@ data class Movie( val title: String, val poster_path: String?, val overview: String -) +) : Parcelable { + constructor(parcel: Parcel) : this( + parcel.readInt(), + parcel.readString()!!, + parcel.readString(), + parcel.readString()!! + ) { + } + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeInt(id) + parcel.writeString(title) + parcel.writeString(poster_path) + parcel.writeString(overview) + } + + override fun describeContents(): Int { + return 0 + } + + companion object CREATOR : Parcelable.Creator { + override fun createFromParcel(parcel: Parcel): Movie { + return Movie(parcel) + } + + override fun newArray(size: Int): Array { + return arrayOfNulls(size) + } + } +} diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/MovieDetailFragment.kt b/CineCool/app/src/main/java/fr/iut/cinecool/MovieDetailFragment.kt index b3ac11f..de6b77e 100644 --- a/CineCool/app/src/main/java/fr/iut/cinecool/MovieDetailFragment.kt +++ b/CineCool/app/src/main/java/fr/iut/cinecool/MovieDetailFragment.kt @@ -6,7 +6,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.navigation.fragment.findNavController -import com.bumptech.glide.Glide import fr.iut.cinecool.API.Movie // import fr.iut.cinecool.databinding.FragmentMovieDetailBinding diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/MoviesFragment.kt b/CineCool/app/src/main/java/fr/iut/cinecool/MoviesFragment.kt index 80deb28..e7b3104 100644 --- a/CineCool/app/src/main/java/fr/iut/cinecool/MoviesFragment.kt +++ b/CineCool/app/src/main/java/fr/iut/cinecool/MoviesFragment.kt @@ -1,5 +1,6 @@ package fr.iut.cinecool +import android.content.Intent import android.os.Bundle import androidx.fragment.app.Fragment import android.view.LayoutInflater @@ -17,6 +18,7 @@ import fr.iut.cinecool.model.Movie import fr.iut.cinecool.model.Stub class MoviesFragment : Fragment() { + private var _binding: FragmentMoviesBinding? = null private val binding get() = _binding!! private lateinit var movieAdapter: MovieAdapter @@ -29,6 +31,7 @@ class MoviesFragment : Fragment() { ): View? { _binding = FragmentMoviesBinding.inflate(inflater, container, false) return binding.root + } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -41,19 +44,29 @@ class MoviesFragment : Fragment() { initRecyclerView() // Observe les changements des données des films populaires - movieViewModel.popularMovies.observe(viewLifecycleOwner, { movies -> + movieViewModel.popularMovies.observe(viewLifecycleOwner) { movies -> movieAdapter.updateMovies(movies) - }) + } // Charge les films populaires loadPopularMovies() + } private fun initRecyclerView() { binding.recyclerMovie.setHasFixedSize(true) binding.recyclerMovie.layoutManager = LinearLayoutManager(context) + movieAdapter = MovieAdapter(ArrayList()) binding.recyclerMovie.adapter = movieAdapter + movieAdapter.onItemClick = { + val fragment = SessionFragment() + val myBundle = Bundle() + myBundle.putParcelable("movie",it) + fragment.arguments=myBundle + findNavController().navigate(R.id.movies_to_sessions) + } + } private fun loadPopularMovies() { diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/SessionFragment.kt b/CineCool/app/src/main/java/fr/iut/cinecool/SessionFragment.kt index d60b2f3..bbb6c0f 100644 --- a/CineCool/app/src/main/java/fr/iut/cinecool/SessionFragment.kt +++ b/CineCool/app/src/main/java/fr/iut/cinecool/SessionFragment.kt @@ -6,7 +6,9 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button +import android.widget.TextView import androidx.navigation.fragment.findNavController +import fr.iut.cinecool.API.Movie class SessionFragment : Fragment() { @@ -20,6 +22,16 @@ class SessionFragment : Fragment() { button.setOnClickListener { findNavController().navigate(R.id.action_SessionFragment_to_fragment_movies) } + init() return view } + + private fun init() { + val movie = arguments?.getParcelable("movie") + if(movie!=null){ + requireView().findViewById(R.id.title).text=movie.title + requireView().findViewById(R.id.description).text=movie.overview + //requireView().findViewById(R.id.afficheFilm).setText()=movie.poster_path + } + } } \ No newline at end of file diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/adapter/MovieAdapter.kt b/CineCool/app/src/main/java/fr/iut/cinecool/adapter/MovieAdapter.kt index eb0aefc..486a4b5 100644 --- a/CineCool/app/src/main/java/fr/iut/cinecool/adapter/MovieAdapter.kt +++ b/CineCool/app/src/main/java/fr/iut/cinecool/adapter/MovieAdapter.kt @@ -7,12 +7,11 @@ import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import fr.iut.cinecool.R -import com.bumptech.glide.Glide import fr.iut.cinecool.API.Movie class MovieAdapter(private var moviesList: List) : RecyclerView.Adapter() { - + var onItemClick : ((Movie)->Unit)?=null class MovieViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val imageView = itemView.findViewById(R.id.imageView) val MovieName = itemView.findViewById(R.id.MovieName) @@ -29,17 +28,21 @@ class MovieAdapter(private var moviesList: List) : } override fun onBindViewHolder(holder: MovieViewHolder, position: Int) { - val movie = moviesList[position] + val movie = moviesList[position]/* val imageUrl = "https://image.tmdb.org/t/p/w500${movie.poster_path}" Glide.with(holder.itemView.context) .load(imageUrl) .placeholder(R.drawable.imitation_game) - .into(holder.imageView) + .into(holder.imageView)*/ holder.MovieName.text = movie.title - // Pour cet exemple, je mets l'overview en tant qu'OtherInformations, vous pouvez le personnaliser selon vos besoins holder.OtherInformations.text = movie.overview + holder.itemView.setOnClickListener { + onItemClick?.invoke(movie) + } + + // Pour cet exemple, je mets l'overview en tant qu'OtherInformations, vous pouvez le personnaliser selon vos besoins } // Ajoutez cette méthode pour mettre à jour la liste des films diff --git a/CineCool/app/src/main/java/fr/iut/cinecool/model/Movie.kt b/CineCool/app/src/main/java/fr/iut/cinecool/model/Movie.kt index 5a4d384..cdc813f 100644 --- a/CineCool/app/src/main/java/fr/iut/cinecool/model/Movie.kt +++ b/CineCool/app/src/main/java/fr/iut/cinecool/model/Movie.kt @@ -1,6 +1,5 @@ package fr.iut.cinecool.model import android.graphics.drawable.Drawable -import com.google.gson.annotations.SerializedName data class Movie(val id:Int, val name:String, var mark:Int, val realisator:String, var duration: Double, val icon:Int) diff --git a/CineCool/app/src/main/res/layout/fragment_session.xml b/CineCool/app/src/main/res/layout/fragment_session.xml index 0cbc773..300b9bb 100644 --- a/CineCool/app/src/main/res/layout/fragment_session.xml +++ b/CineCool/app/src/main/res/layout/fragment_session.xml @@ -6,14 +6,56 @@ android:layout_height="match_parent" tools:context=".SessionFragment"> -