You need to enable JavaScript to run this app. Android:RecyclerView缩略图始终空白?我的Glide使用方式是否正确?
优惠活动
大模型
产品
解决方案
定价
更多

Android:RecyclerView缩略图始终空白?我的Glide使用方式是否正确?

Glide 加载 Google Books 缩略图异常问题

项目基本情况

  • 开发中的Android应用为图书搜索工具,通过Google Books API获取匹配关键词的图书数据
  • API返回的图书字段包含标题、作者、出版日期、缩略图URI
  • 当前已实现RecyclerView列表的文本字段正常渲染,仅缩略图加载存在异常
  • 异常表现:使用Glide加载缩略图时图片始终空白,设置占位图后长期停留在占位图状态
  • 已完成配置:Gradle文件中添加Glide 4.11.0依赖及对应注解处理器
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
  • 调试验证:存储缩略图地址的mThumbnail变量非空,对应URI可正常访问

附带代码

RecyclerView条目布局(book_item.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:paddingTop="10dp"
    android:paddingBottom="10dp"
    android:paddingEnd="16dp"
    android:paddingLeft="16dp"
    android:paddingStart="16dp"
    android:paddingRight="16dp"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/book_thumbnail"
        android:layout_width="100dp"
        android:layout_height="150dp"
        <!--app:layout_constraintDimensionRatio = "4:5.5"-->
         />

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical"
        android:visibility="visible">

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:text="Le petit prince" />

        <TextView
            android:id="@+id/authors"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:text="Antoine-Saint Exupery" />

        <TextView
            android:id="@+id/publishedDate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:text="1943" />

    </LinearLayout>
    
</LinearLayout>

列表适配器代码(BookListAdapter.java)

package com.example.booksearch;

import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * RecyclerView 列表适配器
 */
public class BookListAdapter extends RecyclerView.Adapter<BookListAdapter.BookViewHolder>{

    private LayoutInflater mInflater;
    private final List<Book> mBookList;
    Context context;

    /**
     * 适配器构造方法
     * @param context 应用上下文
     * @param bookList 图书数据列表
     */
    public BookListAdapter(Context context, ArrayList<Book> bookList){
        mInflater = LayoutInflater.from(context);
        this.mBookList = bookList;
        this.context = context;
    }

    /**
     * 清空适配器内所有数据
     */
    public void clear(){
        mBookList.clear();
    }

    /**
     * 批量添加图书数据到适配器
     * @param books 待添加的图书列表
     */
    public void addAll(ArrayList<Book> books){
        mBookList.addAll(books);
    }

    @NonNull
    @Override
    public BookViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View mItemView = mInflater.inflate(R.layout.book_item,parent, false);
        return new BookViewHolder(mItemView, this);
    }

    @Override
    public void onBindViewHolder(@NonNull BookListAdapter.BookViewHolder holder, int position) {
        String mTitle = mBookList.get(position).getTitle();
        String mAuthor = mBookList.get(position).getAuthor();
        String mPublishedDate = mBookList.get(position).getPublishedYear();
        Uri mThumbnailUri = mBookList.get(position).getThumbnailUri();

        holder.titleView.setText(mTitle);
        holder.authorView.setText(mAuthor);
        holder.publishedYearView.setText(mPublishedDate);

        if (!mThumbnailUri.toString().isEmpty()){
            Glide.with(context)
                    .load(mThumbnailUri.toString())
                    .override(100,200)
                    //.placeholder(R.drawable.ic_baseline_book_24)
                    .into(holder.thumbnailView);
        } else {
            Glide.with(context)
                    .load(R.drawable.ic_baseline_book_24)
                    .into(holder.thumbnailView);
            holder.thumbnailView.setImageAlpha(50);
        }
    }

    @Override
    public int getItemCount() {
        return mBookList.size();
    }

    /**
     * 列表项 ViewHolder 内部类
     */
    class BookViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
        public final TextView titleView;
        public final TextView authorView;
        public final TextView publishedYearView;
        public final ImageView thumbnailView;
        final BookListAdapter mAdapter;

        /**
         * ViewHolder 构造方法
         * @param itemView 单个列表项的视图
         * @param adapter 绑定的列表适配器
         */
        public BookViewHolder(View itemView, BookListAdapter adapter){
            super(itemView);
            titleView = itemView.findViewById(R.id.title);
            authorView = itemView.findViewById(R.id.authors);
            publishedYearView = itemView.findViewById(R.id.publishedDate);
            thumbnailView = itemView.findViewById(R.id.book_thumbnail);
            this.mAdapter = adapter;
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {

        }
    }
}

核心疑问

当前代码中Glide加载缩略图的实现方式是否正确,为何出现图片长期无法加载的问题?

内容的提问来源于stack exchange,提问作者abrahamvee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.07 11:45:02