【问题标题】:Picasso error loading some images in recycler viewPicasso 在回收站视图中加载一些图像时出错
【发布时间】:2018-02-16 06:43:02
【问题描述】:

我使用毕加索在回收器视图适配器中加载了一些图像,但一些图像显示它成功加载但实际上没有显示

这是我的图像视图

   <ImageView
                android:id="@+id/news_main_imageView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                tools:src="@drawable/image" />

适配器代码

 if (holder instanceof NewsViewHolder) {


        ((NewsViewHolder) holder).newsTitleTextView.setText(currentArticle.getTitle().trim());
        ((NewsViewHolder) holder).newsDateTextView.setText(DateUtils.getDisplayDate(currentArticle.getPublishedAt(), context));

        if (!currentArticle.getThumbnail().isEmpty()) {
            ((NewsViewHolder) holder).higherLevelSpace.setVisibility(View.VISIBLE);
            ((NewsViewHolder) holder).newsTitleTextView.setGravity(Gravity.CENTER_VERTICAL);

            //Load the news image
            Picasso.with(context)
                    .load(currentArticle.getThumbnail().trim())
                    .networkPolicy(NetworkPolicy.OFFLINE)
                    .into(((NewsViewHolder) holder).newsMainImageView, new Callback() {
                        @Override
                        public void onSuccess() {
                            ((NewsViewHolder) holder).newsImageScrim.setVisibility(View.VISIBLE);
                        }

                        @Override
                        public void onError() {
                            ((NewsViewHolder) holder).newsImageScrim.setVisibility(View.GONE);

                            //Try again online if cache failed
                            Picasso.with(context)
                                    .load(currentArticle.getThumbnail().trim())
                                    .into(((NewsViewHolder) holder).newsMainImageView, new Callback() {
                                        @Override
                                        public void onSuccess() {
                                            ((NewsViewHolder) holder).newsImageScrim.setVisibility(View.VISIBLE);
                                        }

                                        @Override
                                        public void onError() {
                                            ((NewsViewHolder) holder).newsImageScrim.setVisibility(View.GONE);
                                            Timber.e("Could not fetch image");
                                        }
                                    });
                        }
                    });
        } else {
            ((NewsViewHolder) holder).higherLevelSpace.setVisibility(View.GONE);
            ((NewsViewHolder) holder).newsMainImageView.setVisibility(View.GONE);
            ((NewsViewHolder) holder).newsImageScrim.setVisibility(View.GONE);
        }

所以任何人都面临这个问题或有解决方案

【问题讨论】:

  • if (!currentArticle.getThumbnail().isEmpty()) 是什么?
  • 这意味着没有图像,他超出了加载条件,但图像实际上有 url,并且在日志中它已成功加载并缓存但没有显示一些图像有这个并且它们的大小是正常的跨度>
  • 请给我们图片网址
  • 将 https 替换为 http 并在此处更新结果

标签: android caching picasso


【解决方案1】:

您可以使用Glide 来代替它加载图像的最佳方式。

compile 'com.github.bumptech.glide:glide:3.7.0'


String imgUrl = "img.jpg";
ImageView imageView = (ImageView) view.findViewById(R.id.thumbnail);
Glide.with(mContext).load(imgUrl)
            .thumbnail(0.5f)
            .crossFade()
            .diskCacheStrategy(DiskCacheStrategy.ALL)
            .into(imageView);

【讨论】:

    猜你喜欢
    • 2019-05-19
    • 1970-01-01
    • 2018-02-06
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    相关资源
    最近更新 更多