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

@ -6,6 +6,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.ImageButton
import android.widget.TextView
import androidx.navigation.fragment.findNavController
import fr.iut.cinecool.API.Movie
@ -18,14 +19,15 @@ class SessionFragment : Fragment() {
): View? {
// Inflate the layout for this fragment
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 {
findNavController().navigate(R.id.action_SessionFragment_to_fragment_movies)
}
init()
return view
}
private fun init() {
val movie = arguments?.getParcelable<Movie>("movie")
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_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/title"
app:srcCompat="@drawable/imitation_game" />
app:srcCompat="@drawable/no_pictures" />
<TextView
android:id="@+id/description"

Loading…
Cancel
Save