简体   繁体   English

毕加索在回收器视图中加载某些图像时出错

[英]Picasso error loading some images in recycler view

I using picasso to load some images in recycler view adapter but some images show it success loading but it's actually not displayed 我使用毕加索在回收器视图适配器中加载了一些图像,但是一些图像显示它已成功加载,但实际上未显示

Here is my image view 这是我的图像视图

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

the adapter code 适配器代码

 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);
        }

So any one face this problem or have a solution for it 所以任何人都面临这个问题或有解决方案

You can use Glide instead its the best way to load images. 您可以改用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);

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

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