я делаю простой каталог mov ie с API от https://www.themoviedb.org.
сначала я получаю жанр mov ie и l oop каждый жанр, чтобы получить mov ie
fun getGenre(){
index = 0
dataMovie.clear()
val Client = Client()
val apiRoute: Route = Client.getClient()!!.create(Route::class.java)
apiRoute.getCategoryMovie().enqueue(object :
Callback<MovieGenresResponse> {
override fun onResponse(call: Call<MovieGenresResponse>, response: Response<MovieGenresResponse>) {
if(response.code() == 200) {
g = response.body().genres
getMovie()
}
}
override fun onFailure(call: Call<MovieGenresResponse>, t: Throwable){
Log.e("Ops", t.message)
}
})
}
fun getMovie(){
val Client = Client()
val apiRoute: Route = Client.getClient()!!.create(Route::class.java)
apiRoute.getDataMovie(g[index].id).enqueue(object :
Callback<MovieResponse> {
override fun onResponse(call: Call<MovieResponse>, response: Response<MovieResponse>) {
if(response.code() == 200 ) {
val items = MC(g[index].id,g[index].name,response.body().results)
index++
dataMovie.add(items)
if((index) < g.count()){
getMovie()
}else {
listMovieCategorys.postValue(dataMovie)
}
}
Log.d("RESPONSE",response.raw().request().url().toString())
}
override fun onFailure(call: Call<MovieResponse>, t: Throwable){
Log.e("Ops",t.message)
}
})
}
результат хороший
Моя проблема заключается в том, что когда я прокручиваю просмотрщик, изображение перезагружается и показывает неправильное изображение с заголовком mov ie. я ищу и некоторые из них лучше использовать Picaso или Glide, поэтому я использую Glide, как это
override fun onBindViewHolder(cardViewViewHolder: CardViewViewHolder, i: Int) {
val movie = listMovie[i]
try {
if (movie.poster_path != null && movie.poster_path != ""){
val options = RequestOptions()
.centerCrop()
.placeholder(R.mipmap.ic_launcher_round)
.error(R.mipmap.ic_launcher_round)
Glide.with(context!!).load("https://image.tmdb.org/t/p/w342/"+movie.poster_path).apply(options).into(cardViewViewHolder.poster)
}
} catch (e: Exception) {
Log.d("Poster", e.message.toString())
}
cardViewViewHolder.title.text = movie.title
cardViewViewHolder.itemView.setOnClickListener {
if(context != null){
val moveWithDataIntent = Intent(context, DetailItem::class.java)
moveWithDataIntent.putExtra(DetailItem.EXTRA_CLASS, "MOVIE")
moveWithDataIntent.putExtra(DetailItem.EXTRA_DATA, listMovie[i])
context!!.startActivity(moveWithDataIntent)
} else {
context = it.getContext()
}
}
}
, но все еще не решаю мою проблему 1018 *
ОБНОВЛЕНИЕ (ПРОБЛЕМА ЗАГРУЗИТЕ НОМЕР КОНТЕКСТА В ГЛАЙДЕ)
после добавления некоторого изменения в условную проверку плаката я обнаружил проблему в загрузке изображения с глиссадой, проблема в контекст, в прокрутке контекст становится нулевым, я не знаю, почему, и изменение cardViewViewHolder itslef и больше контекста c контекст для моего компонента плаката
try {
if (movie.poster_path != null && movie.poster_path != ""){
val options = RequestOptions()
.centerCrop()
.placeholder(R.mipmap.ic_launcher_round)
.error(R.mipmap.ic_launcher_round)
Glide.with(cardViewViewHolder.poster.getContext()).load("https://image.tmdb.org/t/p/w342/"+movie.poster_path).apply(options).into(cardViewViewHolder.poster)
} else {
Log.d("PosterLog1", movie.poster_path.toString())
cardViewViewHolder.poster.setImageResource(R.mipmap.ic_launcher_round)
}
} catch (e: Exception) {
Log.d("PosterLog2", e.message.toString())
cardViewViewHolder.poster.setImageResource(R.mipmap.ic_launcher_round)
}
я не замечаю этого, потому что изображение загружается правильно при первом запуске