Skip to content

Commit f568d84

Browse files
author
Dicky Herlambang
committed
Treewide: Include TvShow Details and Cast List
* Merge into 1 layout for cast list but still use 2 adapter where it's split by ID * Formatted all lines * Other dummy changes
1 parent b0949f4 commit f568d84

22 files changed

+750
-240
lines changed

.idea/misc.xml

+14
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/AndroidManifest.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
xmlns:tools="http://schemas.android.com/tools"
44
package="com.dicoding.moviecatalog">
55

6-
<uses-permission android:name="android.permission.INTERNET"/>
6+
<uses-permission android:name="android.permission.INTERNET" />
77

88
<application
99
android:allowBackup="true"

app/src/main/java/com/dicoding/moviecatalog/activity/DetailShowActivity.kt

+59-4
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,15 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners
1212
import com.bumptech.glide.request.RequestOptions
1313
import com.dicoding.moviecatalog.R
1414
import com.dicoding.moviecatalog.adapter.DetailMovieAdapter
15-
import com.dicoding.moviecatalog.callback.TvShowCallback
15+
import com.dicoding.moviecatalog.adapter.DetailTvShowAdapter
16+
import com.dicoding.moviecatalog.callback.ShareCallback
1617
import com.dicoding.moviecatalog.data.movie.MovieEntity
1718
import com.dicoding.moviecatalog.data.tvshow.TvShowEntity
1819
import com.dicoding.moviecatalog.databinding.ActivityDetailShowBinding
1920
import com.dicoding.moviecatalog.databinding.ContentDetailShowBinding
2021
import com.dicoding.moviecatalog.viewmodel.DetailMovieViewModel
2122

22-
class DetailShowActivity : AppCompatActivity(), TvShowCallback {
23+
class DetailShowActivity : AppCompatActivity(), ShareCallback {
2324

2425
companion object {
2526
const val SHOW_ID = "show_id"
@@ -42,6 +43,7 @@ class DetailShowActivity : AppCompatActivity(), TvShowCallback {
4243
supportActionBar?.setDisplayHomeAsUpEnabled(true)
4344

4445
val adapter = DetailMovieAdapter()
46+
val adapter2 = DetailTvShowAdapter()
4547
val viewModel = ViewModelProvider(
4648
this,
4749
ViewModelProvider.NewInstanceFactory()
@@ -92,6 +94,40 @@ class DetailShowActivity : AppCompatActivity(), TvShowCallback {
9294
} else if (showId.equals("TvShow")) {
9395
val tvShowId = extras.getString(EXTRA_TV_SHOW)
9496
if (tvShowId != null) {
97+
if (tvShowId == "1") {
98+
val cast = viewModel.getCastTvShow1()
99+
adapter2.setTvShowCastList(cast)
100+
} else if (tvShowId == "2") {
101+
val cast = viewModel.getCastTvShow2()
102+
adapter2.setTvShowCastList(cast)
103+
} else if (tvShowId == "3") {
104+
val cast = viewModel.getCastTvShow3()
105+
adapter2.setTvShowCastList(cast)
106+
} else if (tvShowId == "4") {
107+
val cast = viewModel.getCastTvShow4()
108+
adapter2.setTvShowCastList(cast)
109+
} else if (tvShowId == "5") {
110+
val cast = viewModel.getCastTvShow5()
111+
adapter2.setTvShowCastList(cast)
112+
} else if (tvShowId == "5") {
113+
val cast = viewModel.getCastTvShow5()
114+
adapter2.setTvShowCastList(cast)
115+
} else if (tvShowId == "6") {
116+
val cast = viewModel.getCastTvShow6()
117+
adapter2.setTvShowCastList(cast)
118+
} else if (tvShowId == "7") {
119+
val cast = viewModel.getCastTvShow7()
120+
adapter2.setTvShowCastList(cast)
121+
} else if (tvShowId == "8") {
122+
val cast = viewModel.getCastTvShow8()
123+
adapter2.setTvShowCastList(cast)
124+
} else if (tvShowId == "9") {
125+
val cast = viewModel.getCastTvShow9()
126+
adapter2.setTvShowCastList(cast)
127+
} else if (tvShowId == "10") {
128+
val cast = viewModel.getCastTvShow10()
129+
adapter2.setTvShowCastList(cast)
130+
}
95131
viewModel.setSelectedTvShow(tvShowId)
96132
populateTvShow(viewModel.getTvShow())
97133
}
@@ -101,7 +137,14 @@ class DetailShowActivity : AppCompatActivity(), TvShowCallback {
101137
movieDetailBinding.rvCast.isNestedScrollingEnabled = false
102138
movieDetailBinding.rvCast.layoutManager = LinearLayoutManager(this)
103139
movieDetailBinding.rvCast.setHasFixedSize(true)
104-
movieDetailBinding.rvCast.adapter = adapter
140+
if (extras != null) {
141+
val showId = extras.getString(SHOW_ID)
142+
if (showId.equals("Movie")) {
143+
movieDetailBinding.rvCast.adapter = adapter
144+
} else if (showId.equals("TvShow")) {
145+
movieDetailBinding.rvCast.adapter = adapter2
146+
}
147+
}
105148
val dividerItemDecoration =
106149
DividerItemDecoration(movieDetailBinding.rvCast.context, DividerItemDecoration.VERTICAL)
107150
movieDetailBinding.rvCast.addItemDecoration(dividerItemDecoration)
@@ -135,7 +178,7 @@ class DetailShowActivity : AppCompatActivity(), TvShowCallback {
135178
)
136179
.into(movieDetailBinding.imagePoster)
137180

138-
movieDetailBinding.imgShare.setOnClickListener{
181+
movieDetailBinding.imgShare.setOnClickListener {
139182
onShareClick(movieEntity)
140183
}
141184
}
@@ -146,6 +189,18 @@ class DetailShowActivity : AppCompatActivity(), TvShowCallback {
146189
movieDetailBinding.movieDurationText.text = tvShowEntity.duration
147190
movieDetailBinding.movieRatingText.text = tvShowEntity.rating
148191
movieDetailBinding.descText.text = tvShowEntity.description
192+
movieDetailBinding.movieEpisodeText.text = tvShowEntity.episode + " " + tvShowEntity.season
193+
194+
if (tvShowEntity.genre1.equals("Null")) {
195+
movieDetailBinding.cvGenre1.visibility = View.INVISIBLE
196+
} else {
197+
movieDetailBinding.movieGenre1Text.text = tvShowEntity.genre1
198+
}
199+
if (tvShowEntity.genre2.equals("Null")) {
200+
movieDetailBinding.cvGenre2.visibility = View.INVISIBLE
201+
} else {
202+
movieDetailBinding.movieGenre2Text.text = tvShowEntity.genre2
203+
}
149204

150205
Glide.with(this)
151206
.load(tvShowEntity.imagePath)

app/src/main/java/com/dicoding/moviecatalog/adapter/DetailMovieAdapter.kt

+4-5
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,14 @@ import androidx.recyclerview.widget.RecyclerView
66
import com.bumptech.glide.Glide
77
import com.bumptech.glide.request.RequestOptions
88
import com.dicoding.moviecatalog.R
9-
import com.dicoding.moviecatalog.data.movie.CastEntity
9+
import com.dicoding.moviecatalog.data.movie.MovieCastEntity
1010
import com.dicoding.moviecatalog.databinding.ItemsCastListBinding
1111

1212
class DetailMovieAdapter : RecyclerView.Adapter<DetailMovieAdapter.MovieModuleViewHolder>() {
1313

14-
private val listMovieModules = ArrayList<CastEntity>()
14+
private val listMovieModules = ArrayList<MovieCastEntity>()
1515

16-
fun setMovieModule(movieModule: List<CastEntity>?) {
17-
if (movieModule == null) return
16+
fun setMovieModule(movieModule: List<MovieCastEntity>) {
1817
this.listMovieModules.clear()
1918
this.listMovieModules.addAll(movieModule)
2019
}
@@ -34,7 +33,7 @@ class DetailMovieAdapter : RecyclerView.Adapter<DetailMovieAdapter.MovieModuleVi
3433

3534
inner class MovieModuleViewHolder(private val binding: ItemsCastListBinding) :
3635
RecyclerView.ViewHolder(binding.root) {
37-
fun bind(cast: CastEntity) {
36+
fun bind(cast: MovieCastEntity) {
3837
binding.castRealName.text = cast.castRealName
3938
binding.castName.text = cast.castMovieName
4039
Glide.with(itemView.context)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.dicoding.moviecatalog.adapter
2+
3+
import android.view.LayoutInflater
4+
import android.view.ViewGroup
5+
import androidx.recyclerview.widget.RecyclerView
6+
import com.bumptech.glide.Glide
7+
import com.bumptech.glide.request.RequestOptions
8+
import com.dicoding.moviecatalog.R
9+
import com.dicoding.moviecatalog.data.tvshow.TvShowCastEntity
10+
import com.dicoding.moviecatalog.databinding.ItemsCastListBinding
11+
12+
class DetailTvShowAdapter : RecyclerView.Adapter<DetailTvShowAdapter.TvShowCastViewHolder>() {
13+
14+
private val listTvShowCastList = ArrayList<TvShowCastEntity>()
15+
16+
fun setTvShowCastList(tvShowCast: List<TvShowCastEntity>) {
17+
this.listTvShowCastList.clear()
18+
this.listTvShowCastList.addAll(tvShowCast)
19+
}
20+
21+
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TvShowCastViewHolder {
22+
val itemCastListBinding =
23+
ItemsCastListBinding.inflate(LayoutInflater.from(parent.context), parent, false)
24+
return TvShowCastViewHolder(itemCastListBinding)
25+
}
26+
27+
override fun onBindViewHolder(viewHolder: TvShowCastViewHolder, position: Int) {
28+
val tvShowCastList = listTvShowCastList[position]
29+
viewHolder.bind(tvShowCastList)
30+
}
31+
32+
override fun getItemCount(): Int = listTvShowCastList.size
33+
34+
inner class TvShowCastViewHolder(private val binding: ItemsCastListBinding) :
35+
RecyclerView.ViewHolder(binding.root) {
36+
fun bind(cast: TvShowCastEntity) {
37+
binding.castRealName.text = cast.castRealName
38+
binding.castName.text = cast.castMovieName
39+
Glide.with(itemView.context)
40+
.load(cast.castImage)
41+
.apply(
42+
RequestOptions.placeholderOf(R.drawable.ic_loading)
43+
.error(R.drawable.ic_error)
44+
)
45+
.into(binding.imgCast)
46+
}
47+
}
48+
}

app/src/main/java/com/dicoding/moviecatalog/callback/MovieReaderCallback.kt

-5
This file was deleted.

app/src/main/java/com/dicoding/moviecatalog/callback/TvShowCallback.kt app/src/main/java/com/dicoding/moviecatalog/callback/ShareCallback.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ package com.dicoding.moviecatalog.callback
22

33
import com.dicoding.moviecatalog.data.movie.MovieEntity
44

5-
interface TvShowCallback {
5+
interface ShareCallback {
66
fun onShareClick(movie: MovieEntity)
77
}

app/src/main/java/com/dicoding/moviecatalog/data/movie/CastEntity.kt app/src/main/java/com/dicoding/moviecatalog/data/movie/MovieCastEntity.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.dicoding.moviecatalog.data.movie
22

3-
data class CastEntity(
3+
data class MovieCastEntity(
44
var castId: String,
55
var castMovieName: String,
66
var castRealName: String,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.dicoding.moviecatalog.data.tvshow
2+
3+
data class TvShowCastEntity(
4+
var castId: String,
5+
var castMovieName: String,
6+
var castRealName: String,
7+
var castImage: String
8+
)

app/src/main/java/com/dicoding/moviecatalog/data/tvshow/TvShowContentEntity.kt

-5
This file was deleted.

app/src/main/java/com/dicoding/moviecatalog/data/tvshow/TvShowEntity.kt

+4
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ data class TvShowEntity(
44
var tvShowId: String,
55
var title: String,
66
var description: String,
7+
var genre1: String,
8+
var genre2: String,
9+
var episode: String,
10+
var season: String,
711
var duration: String,
812
var releaseDate: String,
913
var imagePath: String,

app/src/main/java/com/dicoding/moviecatalog/data/tvshow/TvShowModuleEntity.kt

-11
This file was deleted.

0 commit comments

Comments
 (0)