ProgrammeDayFragment.kt 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package fr.riff_app.riff.ui.programme
  2. import android.os.Bundle
  3. import android.view.LayoutInflater
  4. import android.view.View
  5. import android.view.ViewGroup
  6. import androidx.fragment.app.Fragment
  7. import androidx.lifecycle.Observer
  8. import androidx.lifecycle.ViewModelProviders
  9. import androidx.recyclerview.widget.LinearLayoutManager
  10. import androidx.recyclerview.widget.RecyclerView
  11. import fr.riff_app.riff.R
  12. import fr.riff_app.riff.planning.Planning
  13. import fr.riff_app.riff.planning.Programme
  14. import fr.riff_app.riff.weekdays
  15. class ProgrammeDayFragment : Fragment() {
  16. private lateinit var recyclerView: RecyclerView
  17. private lateinit var viewAdapter: RecyclerView.Adapter<*>
  18. private lateinit var viewManager: RecyclerView.LayoutManager
  19. private val programmeOfTheDay: ArrayList<Programme> = ArrayList()
  20. override fun onCreateView(
  21. inflater: LayoutInflater, container: ViewGroup?,
  22. savedInstanceState: Bundle?
  23. ): View? {
  24. // Inflate the layout for this fragment
  25. val viewModel: ProgrammeDayViewModel = ViewModelProviders.of(this).get(ProgrammeDayViewModel::class.java)
  26. viewModel.day = arguments?.getString("day") ?: ""
  27. val root = inflater.inflate(R.layout.fragment_programme_day, container, false)
  28. Planning.instance.programmes.forEach {
  29. if (it.isThisDay(day = weekdays.indexOf(viewModel.day)))
  30. programmeOfTheDay.add(it)
  31. }
  32. viewManager = LinearLayoutManager(context)
  33. viewAdapter = ProgrammeAdapter(programmeOfTheDay, viewModel.day)
  34. recyclerView = root.findViewById<RecyclerView>(R.id.programme_recycler).apply {
  35. // use this setting to improve performance if you know that changes
  36. // in content do not change the layout size of the RecyclerView
  37. setHasFixedSize(true)
  38. layoutManager = viewManager
  39. adapter = viewAdapter
  40. }
  41. Planning.instance.currentProgramme.observe(viewLifecycleOwner, Observer<String> {
  42. programmeOfTheDay.clear()
  43. Planning.instance.programmes.forEach {
  44. if (it.isThisDay(day = weekdays.indexOf(viewModel.day)))
  45. programmeOfTheDay.add(it)
  46. }
  47. viewAdapter.notifyDataSetChanged()
  48. })
  49. Planning.instance.isDataFetched.observe(viewLifecycleOwner, Observer<Boolean> {
  50. viewAdapter.notifyDataSetChanged()
  51. })
  52. return root
  53. }
  54. companion object {
  55. @JvmStatic
  56. fun newInstance(day: String): ProgrammeDayFragment {
  57. val args = Bundle()
  58. args.putString("day", day)
  59. val f = ProgrammeDayFragment()
  60. f.arguments = args
  61. return f
  62. }
  63. }
  64. }