QueueFragment.kt 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package io.r_a_d.radio2.ui.songs.queuelp
  2. import android.os.Bundle
  3. import android.util.Log
  4. import android.view.LayoutInflater
  5. import android.view.View
  6. import android.view.ViewGroup
  7. import androidx.fragment.app.Fragment
  8. import androidx.lifecycle.Observer
  9. import androidx.recyclerview.widget.LinearLayoutManager
  10. import androidx.recyclerview.widget.RecyclerView
  11. import io.r_a_d.radio2.R
  12. import io.r_a_d.radio2.playerstore.PlayerStore
  13. import io.r_a_d.radio2.playerstore.Song
  14. class QueueFragment : Fragment(){
  15. private val lastPlayedFragmentTag = this::class.java.name
  16. private lateinit var recyclerView: RecyclerView
  17. private lateinit var viewAdapter: RecyclerView.Adapter<*>
  18. private lateinit var viewManager: RecyclerView.LayoutManager
  19. private val queueObserver = Observer<Boolean> {
  20. Log.d(tag, lastPlayedFragmentTag + "queue changed")
  21. viewAdapter.notifyDataSetChanged()
  22. }
  23. override fun onCreateView(
  24. inflater: LayoutInflater, container: ViewGroup?,
  25. savedInstanceState: Bundle?
  26. ): View? {
  27. // Inflate the layout for this fragment
  28. val root = inflater.inflate(R.layout.fragment_last_played, container, false)
  29. viewManager = LinearLayoutManager(context)
  30. viewAdapter = SongAdaptater(
  31. if (PlayerStore.instance.queue.isEmpty())
  32. ArrayList<Song>(listOf((Song("No queue - "))))
  33. else
  34. PlayerStore.instance.queue
  35. )
  36. recyclerView = root.findViewById<RecyclerView>(R.id.queue_lp_recycler).apply {
  37. // use this setting to improve performance if you know that changes
  38. // in content do not change the layout size of the RecyclerView
  39. setHasFixedSize(true)
  40. // use a linear layout manager
  41. layoutManager = viewManager
  42. // specify an viewAdapter (see also next example)
  43. adapter = viewAdapter
  44. }
  45. PlayerStore.instance.isQueueUpdated.observeForever(queueObserver)
  46. return root
  47. }
  48. override fun onDestroyView() {
  49. PlayerStore.instance.isQueueUpdated.removeObserver(queueObserver)
  50. super.onDestroyView()
  51. }
  52. companion object {
  53. @JvmStatic
  54. fun newInstance() = QueueFragment()
  55. }
  56. }