NewsFragment.kt 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package io.r_a_d.radio2.ui.news
  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.ViewModelProviders
  9. import androidx.recyclerview.widget.LinearLayoutManager
  10. import androidx.recyclerview.widget.RecyclerView
  11. import io.r_a_d.radio2.R
  12. class NewsFragment : Fragment() {
  13. private lateinit var newsViewModel: NewsViewModel
  14. private lateinit var recyclerView: RecyclerView
  15. private lateinit var viewAdapter: RecyclerView.Adapter<*>
  16. private lateinit var viewManager: RecyclerView.LayoutManager
  17. override fun onCreateView(
  18. inflater: LayoutInflater,
  19. container: ViewGroup?,
  20. savedInstanceState: Bundle?
  21. ): View? {
  22. newsViewModel =
  23. ViewModelProviders.of(this).get(NewsViewModel::class.java)
  24. val root = inflater.inflate(R.layout.fragment_news, container, false) as androidx.swiperefreshlayout.widget.SwipeRefreshLayout
  25. viewManager = LinearLayoutManager(context)
  26. viewAdapter = NewsAdapter(newsViewModel.newsArray)
  27. recyclerView = root.findViewById<RecyclerView>(R.id.news_recycler).apply {
  28. // use this setting to improve performance if you know that changes
  29. // in content do not change the layout size of the RecyclerView
  30. setHasFixedSize(true)
  31. // use a linear layout manager
  32. layoutManager = viewManager
  33. // specify an viewAdapter (see also next example)
  34. adapter = viewAdapter
  35. }
  36. root.setOnRefreshListener {
  37. newsViewModel.fetch(root, viewAdapter)
  38. }
  39. return root
  40. }
  41. override fun onCreate(savedInstanceState: Bundle?) {
  42. newsViewModel =
  43. ViewModelProviders.of(this).get(NewsViewModel::class.java)
  44. newsViewModel.fetch()
  45. Log.d(tag, "news fetched onCreate")
  46. super.onCreate(savedInstanceState)
  47. }
  48. }