ProgrammeDayFragment.kt 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package fr.forum_thalie.tsumugi.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.forum_thalie.tsumugi.R
  12. import fr.forum_thalie.tsumugi.planning.Planning
  13. import fr.forum_thalie.tsumugi.planning.Programme
  14. import fr.forum_thalie.tsumugi.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 =
  34. ProgrammeAdapter(programmeOfTheDay, viewModel.day)
  35. recyclerView = root.findViewById<RecyclerView>(R.id.programme_recycler).apply {
  36. // use this setting to improve performance if you know that changes
  37. // in content do not change the layout size of the RecyclerView
  38. setHasFixedSize(true)
  39. layoutManager = viewManager
  40. adapter = viewAdapter
  41. }
  42. Planning.instance.currentProgramme.observe(viewLifecycleOwner, Observer<String> {
  43. programmeOfTheDay.clear()
  44. Planning.instance.programmes.forEach {
  45. if (it.isThisDay(day = weekdays.indexOf(viewModel.day)))
  46. programmeOfTheDay.add(it)
  47. }
  48. viewAdapter.notifyDataSetChanged()
  49. })
  50. Planning.instance.isDataFetched.observe(viewLifecycleOwner, Observer<Boolean> {
  51. viewAdapter.notifyDataSetChanged()
  52. })
  53. return root
  54. }
  55. companion object {
  56. @JvmStatic
  57. fun newInstance(day: String): ProgrammeDayFragment {
  58. val args = Bundle()
  59. args.putString("day", day)
  60. val f = ProgrammeDayFragment()
  61. f.arguments = args
  62. return f
  63. }
  64. }
  65. }