我正在尝试从 api (tmdb) 获取电影列表图像,但我不知道我是否使用了错误的 api 或 GLIDE
这是 Glide 的一段代码:
override fun onBindViewHolder(holder: MovieViewHolder, position: Int) {
holder.binding.apply {
val movie = movies[position]
val imageBase = "https://image.tmdb.org/t/p/w500/"
Glide.with(holder.itemView)
.load(imageBase + moviePoster)
.error(R.mipmap.tvmovieposter)
.centerCrop()
.into(holder.binding.moviePoster)
movie
movieTitle.text = movies[position].title
MovieReleaseDate.text = movies[position].release_date
}
}
这是错误:
/Glide:加载失败
https://image.tmdb.org/t/p/w500/androidx.appcompat.widget.AppCompatImageView{995e7ba V.ED....I. 0,0- 0,0 #7f080119 app:id/movie_poster} 与大小 [300x400] `你的文字``I/Glide:根本原因(1 中的 1) com.bumptech.glide.load.HttpException:连接或获取数据失败,状态码:-1 在 com.bumptech.glide.load.data.HttpUrlFetcher.loadDataWithRedirects(HttpUrlFetcher.java:98)
这是我获取网址的地方:
interface MovieApiInterface {
@GET("/3/movie/popular?api_key=90a54a6b7ac845f17b2b70d45f6c2851")
fun getMovieList(): Call<MovieResponse>
}
这是我的数据类:
@Parcelize
data class Movie(
@SerializedName("id")
val id: String?,
@SerializedName("title")
val title: String?,
@SerializedName("poster_path")
val poster_path: String?,
@SerializedName("release_date")
val release_date: String,
) : Parcelable {
constructor() : this("", "", "", "")
}
您的错误在以下行:
val movie = movies[position]
从您稍后在
movies[position].title
中使用电影的方式来看,我假设“电影”是某种数据类的数组。
该数据类的哪一部分包含海报的 URL?
如果你发布你的“电影”课程会更清楚。我可以看到它有一个
title
和 release_date
如果这是我做的 Udacity 纳米学位课程,那么您正在寻找
poster_path
,因此您错误所在的第一行可能应该类似于 val movie = movies[position].poster_path
但请检查您的电影数据类以确定。