add viewModel -> send data between fragment

need to bind data btw master and detail in the detail

! images never load ?
Système_de_proximité
Bastien JACQUELIN 2 years ago
parent ce1e053442
commit 6c15c19420

@ -9,6 +9,7 @@ import android.view.ViewGroup
import android.widget.Button import android.widget.Button
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import android.widget.LinearLayout import android.widget.LinearLayout
import androidx.fragment.app.activityViewModels
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
@ -16,8 +17,10 @@ import fr.iut.cinecool.adapter.MovieAdapter
import fr.iut.cinecool.databinding.FragmentMoviesBinding import fr.iut.cinecool.databinding.FragmentMoviesBinding
import fr.iut.cinecool.model.Movie import fr.iut.cinecool.model.Movie
import fr.iut.cinecool.model.Stub import fr.iut.cinecool.model.Stub
import fr.iut.cinecool.model.cineViewModel
class MoviesFragment : Fragment() { class MoviesFragment : Fragment() {
private val sharedViewModel: cineViewModel by activityViewModels()
private var _binding: FragmentMoviesBinding? = null private var _binding: FragmentMoviesBinding? = null
private val binding get() = _binding!! private val binding get() = _binding!!
@ -31,7 +34,6 @@ class MoviesFragment : Fragment() {
): View? { ): View? {
_binding = FragmentMoviesBinding.inflate(inflater, container, false) _binding = FragmentMoviesBinding.inflate(inflater, container, false)
return binding.root return binding.root
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@ -60,10 +62,14 @@ class MoviesFragment : Fragment() {
movieAdapter = MovieAdapter(ArrayList()) movieAdapter = MovieAdapter(ArrayList())
binding.recyclerMovie.adapter = movieAdapter binding.recyclerMovie.adapter = movieAdapter
movieAdapter.onItemClick = { movieAdapter.onItemClick = {
val fragment = SessionFragment() /*val fragment = SessionFragment()
val myBundle = Bundle() fragment.arguments = Bundle().apply {
myBundle.putParcelable("movie",it) putParcelable("movie",it)
fragment.arguments=myBundle }*/
sharedViewModel.setCine(it)
findNavController().navigate(R.id.movies_to_sessions) findNavController().navigate(R.id.movies_to_sessions)
} }

@ -6,6 +6,7 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Button import android.widget.Button
import android.widget.ImageButton
import android.widget.TextView import android.widget.TextView
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import fr.iut.cinecool.API.Movie import fr.iut.cinecool.API.Movie
@ -18,14 +19,15 @@ class SessionFragment : Fragment() {
): View? { ): View? {
// Inflate the layout for this fragment // Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_session, container, false) val view = inflater.inflate(R.layout.fragment_session, container, false)
val button = view.findViewById<Button>(R.id.returnButton) return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
init()
val button = view.findViewById<ImageButton>(R.id.returnButton)
button.setOnClickListener { button.setOnClickListener {
findNavController().navigate(R.id.action_SessionFragment_to_fragment_movies) findNavController().navigate(R.id.action_SessionFragment_to_fragment_movies)
} }
init()
return view
} }
private fun init() { private fun init() {
val movie = arguments?.getParcelable<Movie>("movie") val movie = arguments?.getParcelable<Movie>("movie")
if(movie!=null){ if(movie!=null){

@ -0,0 +1,16 @@
package fr.iut.cinecool.model
import androidx.lifecycle.ViewModel
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
class cineViewModel : ViewModel() {
private val _cine = MutableLiveData<fr.iut.cinecool.API.Movie>()
val cine: LiveData<fr.iut.cinecool.API.Movie> = _cine
fun setCine(cine: fr.iut.cinecool.API.Movie) {
_cine.value = cine
}
}

@ -47,7 +47,7 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title" app:layout_constraintTop_toBottomOf="@+id/title"
app:srcCompat="@drawable/imitation_game" /> app:srcCompat="@drawable/no_pictures" />
<TextView <TextView
android:id="@+id/description" android:id="@+id/description"

Loading…
Cancel
Save