繁体   English   中英

尽管日志中的占位符图像和 URL 都在工作,但 Glide 并未从 URL 加载图像

[英]Glide isn't loading images from URL despite both placeholder image and URL in logs working

我正在尝试通过 Glide 库将图像加载到 RecyclerView 对象中,但无论我如何更改,我都无法成功加载图像。

'holder.image'(显示在下面的代码片段中)直接将图像插入 RecyclerView ViewHolder,如果我包含它们,它会成功显示占位符图像。 此外,日志片段显示了我传入的 URL 链接,单击时图像成功显示。

我尝试了多个不同版本的 Glide:4.9、4.4 和 3.7(最新版本,我正在关注的教程中的版本,以及在之前的堆栈交换答案中推荐的版本)。

我在清单中包含了以下两个权限:以及只包含一个而不包含一个。

我尝试过 HTTPS 和 HTTP 链接以及来自不同站点的链接。 (包括直接从我遵循的教程中复制链接)。

下面是我的 RecyclerViewAdapter 类,其中删除了所有非图像变量。 据我所知,唯一的关键部分是在 onBindViewHolder 函数中,因为占位符可以正常工作,但为了以防万一,我已经包含了完整的(减少的)类。

public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
    private ArrayList<String> mImageAddresses = new ArrayList<>();

    public RecyclerViewAdapter(Context mContext, ArrayList<String> mImageAddresses) {
        this.mImageAddresses = mImageAddresses;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_entry, parent, false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
        Log.d(TAG, "onBindViewHolder: called. Address name: " + mImageAddresses.get(position));
        Glide.with(mContext)
            .load(mImageAddresses.get(position))
            .placeholder(R.drawable.ic_launcher_foreground)
            .into(holder.image);

        holder.parentLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d(TAG, "onClick: clicked on: " + mTitles.get(position));
                Toast.makeText(mContext, "PLACEHOLDER", Toast.LENGTH_SHORT).show();
            }
        }
    }


    @Override
    public int getItemCount() {
        return mTitles.size(); //I have removed mTitles elsewhere for a more concise code snippet but it is successfully implemented
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        ImageView image;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.Icon);
        }
    }
}
2019-08-16 20:18:46.515 19359-19359/com.example.myapplication D/RecyclerViewAdapter: onBindViewHolder: called. Address name: http://c1.staticflickr.com/5/4636/25316407448_de5fbf183d_o.jpg

2019-08-16 20:18:46.745 19359-19359/com.example.myapplication D/RecyclerViewAdapter: onBindViewHolder: called. Address name: https://i.redd.it/obx4zydshg601.jpg

2019-08-16 20:18:46.764 19359-19359/com.example.myapplication D/RecyclerViewAdapter: onBindViewHolder: called. Address name: https://i.imgur.com/ZcLLrkY.jpg

以上是使用我遵循的教程中的图像的一些示例日志输出。 所有链接均可点击。 日志中似乎没有出现错误。

一个常见的问题是position是最终的

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    Glide.with(mContext)
        .load(mImageAddresses.get(holder.getAdapterPosition()))
        .placeholder(R.drawable.ic_launcher_foreground)
        .into(holder.image);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM