Advertisement
Guest User

Untitled

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