Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. package me.alhaz.tutorial.architecturecomponent.views.movies.detail
  2.  
  3. import androidx.appcompat.app.AppCompatActivity
  4. import android.os.Bundle
  5. import android.view.View
  6. import androidx.lifecycle.Observer
  7. import androidx.lifecycle.ViewModelProviders
  8. import com.bumptech.glide.Glide
  9. import kotlinx.android.synthetic.main.activity_movie_detail.*
  10. import me.alhaz.tutorial.architecturecomponent.BuildConfig
  11. import me.alhaz.tutorial.architecturecomponent.R
  12. import me.alhaz.tutorial.architecturecomponent.models.repositories.movie.remote.response.Movie
  13. import me.alhaz.tutorial.architecturecomponent.viewmodels.movies.detail.MovieDetailViewModel
  14. import me.alhaz.tutorial.architecturecomponent.viewmodels.movies.factory.MovieViewModelFactory
  15.  
  16. class MovieDetailActivity : AppCompatActivity() {
  17.  
  18. private lateinit var viewModel: MovieDetailViewModel
  19. private var movieID: Long = 0
  20.  
  21. override fun onCreate(savedInstanceState: Bundle?) {
  22. super.onCreate(savedInstanceState)
  23. setContentView(R.layout.activity_movie_detail)
  24.  
  25. setupLayout()
  26. getIntentData()
  27. setupViewModel()
  28. }
  29.  
  30. private fun getIntentData() {
  31. intent.extras?.let { bundle ->
  32. movieID = bundle.getLong("movie_id")
  33. }
  34. }
  35.  
  36. private fun obtainViewModel(): MovieDetailViewModel {
  37. val factory = MovieViewModelFactory.getInstance(this.application)
  38. return ViewModelProviders.of(this, factory).get(MovieDetailViewModel::class.java)
  39. }
  40.  
  41. private fun setupViewModel() {
  42. viewModel = obtainViewModel()
  43. viewModel.getMovieDetail(movieID).observe(this, Observer { movie ->
  44. showDetailData(movie)
  45. })
  46. }
  47.  
  48. private fun setupLayout() {
  49. title = "Detail"
  50. getSupportActionBar()?.let {
  51. it.setDisplayHomeAsUpEnabled(true)
  52. }
  53. }
  54.  
  55. override fun onSupportNavigateUp(): Boolean {
  56. onBackPressed()
  57. return true
  58. }
  59.  
  60. private fun showDetailData(movie: Movie) {
  61. svBackground.visibility = View.VISIBLE
  62. progressBar.visibility = View.GONE
  63. Glide.with(this).load(BuildConfig.BASE_IMAGE_URL + movie.posterPath).into(ivPhoto)
  64. tvYear.text = movie.releaseDate.split("-").get(0)
  65. tvTitle.text = movie.title
  66. tvScore.text = "Score"
  67. tvRating.text = "${movie.voteAverage}"
  68. tvRuntime.text = getRuntime(movie.runtime)
  69. tvDescription.text = movie.overview
  70. }
  71.  
  72. private fun getRuntime(runtime: Long): String {
  73. val hour = (runtime / 60).toString().split(".").get(0)
  74. val minute = runtime.rem(60)
  75. return "${hour}h ${minute}m"
  76. }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement