调用TMDB API成功后Glide无法在RecyclerView的ImageView中加载图片求助
安卓端Glide加载TMDB电影海报故障排查
我已成功完成API调用,除图片外其余所有内容均可正常展示。
适配器代码
import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide import com.example.moviespotter.R class MoviesAdapter(val movies: List<Result>): RecyclerView.Adapter<MoviesViewHolder>() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MoviesViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.movie_item, parent, false) return MoviesViewHolder(view) } override fun getItemCount(): Int { return movies.size } override fun onBindViewHolder(holder: MoviesViewHolder, position: Int) { return holder.bind(movies[position]) } } class MoviesViewHolder(itemView : View): RecyclerView.ViewHolder(itemView){ private val photo:ImageView = itemView.findViewById(R.id.movie_photo) private val title:TextView = itemView.findViewById(R.id.movie_title) private val overview:TextView = itemView.findViewById(R.id.movie_overview) private val rating:TextView = itemView.findViewById(R.id.movie_rating) fun bind(movie: Result) { Glide.with(itemView.context).load("http://image.tmdb.org/t/p/w500${movie.poster_path}").into(photo) title.text = "标题:" + movie.title overview.text = movie.overview rating.text = "用户评分:" + movie.vote_average.toString() } }
暂未定位到问题根因,程序运行无报错,直接访问拼接后的图片URL可确认图片本身有效,未发现明显异常。
布局文件中ImageView配置
<ImageView android:layout_width="match_parent" android:layout_height="200dp" android:layout_centerHorizontal="true" android:id="@+id/movie_photo" android:contentDescription="电影海报" />
初始运行效果截图

更新内容
添加占位图后,占位图可正常展示,调整后的Glide加载代码如下:
Glide.with(itemView.context).load("http://image.tmdb.org/t/p/w500/rjkmN1dniUHVYAtwuV3Tji7FsDO.jpg").placeholder(R.drawable.space_dog_laika1).into(photo)
添加占位图后的运行效果截图

内容的提问来源于stack exchange,提问作者petestmart
相关产品推荐
相关产品推荐

